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/changelog.md b/docs/changelog.md index fbb9a7daf5..2149706965 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -25,8 +25,20 @@ 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` + 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. @@ -49,7 +61,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).origin_cast[mut=False]() ``` - The `unsafe_ptr()` method on several standard library collection types have @@ -67,6 +79,33 @@ 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 + 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 + `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. + ### Tooling changes - mblack (aka `mojo format`) no longer formats non-mojo files. This prevents 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. 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 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 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 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/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/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/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/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_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/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 80e0d5be16..119d2a0102 100644 --- a/stdlib/src/builtin/int.mojo +++ b/stdlib/src/builtin/int.mojo @@ -16,8 +16,7 @@ These are Mojo built-ins, so you don't need to import them. """ from collections import InlineArray, KeyElement - -from collections.string import ( +from collections.string.string import ( _calc_initial_buffer_size_int32, _calc_initial_buffer_size_int64, ) @@ -308,6 +307,7 @@ struct Int( Roundable, IntLike, _HashableWithHasher, + ExplicitlyCopyable, ): """This type represents an integer value.""" @@ -330,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/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/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. 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 016f0a80f7..cb20e0485c 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, ) @@ -239,6 +240,7 @@ struct SIMD[type: DType, size: Int]( CollectionElement, # FIXME(MOCO-1291): Can't implement this due to ambiguity. # CollectionElementNew, + ExplicitlyCopyable, Floatable, Floorable, Writable, @@ -308,6 +310,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/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 581e21de5e..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 @@ -75,13 +74,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 @@ -498,7 +497,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/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..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) @@ -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[]) @@ -937,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/src/collections/dict.mojo b/stdlib/src/collections/dict.mojo index f6b36900dc..d84fc02797 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 ]()[] ) @@ -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.""" @@ -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. @@ -319,7 +317,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 +331,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) @@ -455,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 @@ -517,16 +522,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 +650,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^ @@ -754,12 +756,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: @@ -772,16 +773,36 @@ 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: Int + var slot: UInt64 var index: Int found, slot, index = self._find_index(hash, key) 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" + # SAFETY: We just checked that `entry` is present. + return Pointer.address_of(entry[].unsafe_value().value) + + return None fn get(self, key: K) -> Optional[V]: """Get a value from the dictionary by key. @@ -839,7 +860,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 +993,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 +1003,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: @@ -1087,13 +1108,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..f537f7151f 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^ @@ -496,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 @@ -545,7 +550,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) @@ -590,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/collections/optional.mojo b/stdlib/src/collections/optional.mojo index 0e318980e9..b96d3d694a 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 @@ -382,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/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 98% rename from stdlib/src/utils/format.mojo rename to stdlib/src/collections/string/format.mojo index 752a34898d..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 @@ -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/collections/string/inline_string.mojo similarity index 94% rename from stdlib/src/utils/inline_string.mojo rename to stdlib/src/collections/string/inline_string.mojo index 7ddb0df082..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 @@ -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 @@ -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: @@ -333,13 +320,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/collections/string.mojo b/stdlib/src/collections/string/string.mojo similarity index 98% rename from stdlib/src/collections/string.mojo rename to stdlib/src/collections/string/string.mojo index 06cd2afeb5..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, @@ -861,13 +858,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): @@ -887,24 +884,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 @@ -1672,7 +1664,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. @@ -1685,21 +1677,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/collections/string/string_slice.mojo similarity index 94% rename from stdlib/src/utils/string_slice.mojo rename to stdlib/src/collections/string/string_slice.mojo index c465811f1b..e4d8a60bdb 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.""" @@ -334,13 +332,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__[ @@ -360,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 # ===------------------------------------------------------------------===# @@ -926,7 +951,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(), @@ -1105,6 +1130,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/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/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]())) 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/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/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..efe6018cd9 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 @@ -973,12 +973,6 @@ struct UnsafePointer[ @always_inline("nodebug") 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 +984,6 @@ 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 +995,93 @@ 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, + 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, **_] @@ -1121,7 +1198,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/_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 2d6926568d..429dd1e0f7 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): @@ -145,13 +179,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. @@ -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. @@ -451,7 +475,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, ) @@ -469,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) # ===-----------------------------------------------------------------------===# @@ -509,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: @@ -530,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, @@ -541,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](): 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/__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 4e92e96848..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 @@ -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/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() 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/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 98% rename from stdlib/test/collections/test_string.mojo rename to stdlib/test/collections/string/test_string.mojo index 4d9151b279..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 @@ -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") @@ -1263,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: @@ -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/collections/string/test_string_slice.mojo similarity index 95% rename from stdlib/test/utils/test_string_slice.mojo rename to stdlib/test/collections/string/test_string_slice.mojo index f88ed32dbb..14e84ac80d 100644 --- a/stdlib/test/utils/test_string_slice.mojo +++ b/stdlib/test/collections/string/test_string_slice.mojo @@ -12,12 +12,14 @@ # ===----------------------------------------------------------------------=== # # 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, + _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: @@ -349,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)): @@ -624,6 +637,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() @@ -635,12 +662,14 @@ 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() 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() 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..d9252d8f3d 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) @@ -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() 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..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(): @@ -531,7 +534,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 +542,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 +554,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): @@ -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() diff --git a/stdlib/test/collections/test_optional.mojo b/stdlib/test/collections/test_optional.mojo index 70cca5de6f..6fe264cafd 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") @@ -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() 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/memory/test_unsafepointer.mojo b/stdlib/test/memory/test_unsafepointer.mojo index 168ffc7bdf..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 @@ -150,15 +152,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 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) 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