diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000000..a74fda4b67 --- /dev/null +++ b/.clang-format @@ -0,0 +1,2 @@ +BasedOnStyle: LLVM +AlwaysBreakTemplateDeclarations: Yes diff --git a/.clang-tidy b/.clang-tidy new file mode 100644 index 0000000000..e78abd3994 --- /dev/null +++ b/.clang-tidy @@ -0,0 +1,57 @@ +InheritParentConfig: true +Checks: > + bugprone-argument-comment, + bugprone-assert-side-effect, + bugprone-branch-clone, + bugprone-copy-constructor-init, + bugprone-dangling-handle, + bugprone-dynamic-static-initializers, + bugprone-macro-parentheses, + bugprone-macro-repeated-side-effects, + bugprone-misplaced-widening-cast, + bugprone-move-forwarding-reference, + bugprone-multiple-statement-macro, + bugprone-suspicious-semicolon, + bugprone-swapped-arguments, + bugprone-terminating-continue, + bugprone-unused-raii, + bugprone-unused-return-value, + misc-redundant-expression, + misc-static-assert, + misc-unused-using-decls, + modernize-use-bool-literals, + modernize-loop-convert, + modernize-make-unique, + modernize-raw-string-literal, + modernize-use-equals-default, + modernize-use-default-member-init, + modernize-use-emplace, + modernize-use-nullptr, + modernize-use-override, + modernize-use-using, + performance-for-range-copy, + performance-implicit-conversion-in-loop, + performance-inefficient-algorithm, + performance-inefficient-vector-operation, + performance-move-const-arg, + performance-no-automatic-move, + performance-trivially-destructible, + performance-unnecessary-copy-initialization, + performance-unnecessary-value-param, + readability-avoid-const-params-in-decls, + readability-const-return-type, + readability-container-size-empty, + readability-inconsistent-declaration-parameter-name, + readability-misleading-indentation, + readability-redundant-control-flow, + readability-redundant-smartptr-get, + readability-simplify-subscript-expr, + readability-use-anyofallof + +CheckOptions: + - key: readability-identifier-naming.MemberCase + value: camelBack + - key: readability-identifier-naming.ParameterCase + value: camelBack + - key: readability-identifier-naming.VariableCase + value: camelBack diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..e7cbefb6bf --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# Add an override so that .🔥 files are highlighted as Mojo files within github +# since the linguist system does not work with the .🔥 extention. +# See https://github.com/github/linguist/blob/master/docs/overrides.md +*.🔥 linguist-language=Mojo diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index f091037d6b..97ce248c98 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,14 +1,18 @@ -# Code owners for the Mojo repository +# Codeowners for MAX repo. +# Every line is a file pattern that is followed by one or more code owners. +# Order is important; the last matching pattern takes the most precedence. # Standard Library Sources -/stdlib/ @modular/stdlib +/mojo/stdlib/ @modular/stdlib # Documentation -/docs/ @modular/mojo-docs +/mojo/docs/ @modular/mojo-docs -/docs/changelog.md @modular/stdlib +/mojo/docs/changelog.md @modular/stdlib -/stdlib/docs/ @modular/mojo-docs @modular/stdlib +/mojo/stdlib/docs/ @modular/mojo-docs @modular/stdlib # Examples -/examples/ @jackos +/examples/mojo/ @jackos + +* @modularml/max-code-reviewers diff --git a/.github/ISSUE_TEMPLATE/doc_issue.yaml b/.github/ISSUE_TEMPLATE/doc_issue.yaml index daf162cefc..a7781e61a8 100644 --- a/.github/ISSUE_TEMPLATE/doc_issue.yaml +++ b/.github/ISSUE_TEMPLATE/doc_issue.yaml @@ -12,7 +12,7 @@ ##===----------------------------------------------------------------------===## name: Documentation issue -description: Report a problem with the Mojo docs +description: Report a problem with the MAX docs title: "[Docs]" labels: - documentation @@ -20,11 +20,12 @@ body: - type: markdown attributes: value: | - Thank you for helping us improve the Mojo docs! + Thank you for helping us improve the MAX docs! Please add a title above and fill in the following fields so we can understand the problem. - type: input + id: url attributes: label: Where is the problem? description: Provide a link to the problematic page (with a heading anchor). diff --git a/.github/ISSUE_TEMPLATE/magic_issue.yaml b/.github/ISSUE_TEMPLATE/magic_issue.yaml new file mode 100644 index 0000000000..0f5ce15b62 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/magic_issue.yaml @@ -0,0 +1,61 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Magic issue report +description: Create an issue to help us improve Magic +title: "[Magic]" +labels: + - "magic" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + value: | + ### Actual behavior + + + ### Expected behavior + + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Provide a relevant code snippet or a link to the code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - If using the Playground, name the pre-existing notebook that failed and the steps that led to failure. + - Include anything else that might help us debug the issue. + validations: + required: true + + - type: textarea + id: Context + attributes: + label: System information + description: What version of Mojo are you using? + value: | + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. diff --git a/.github/ISSUE_TEMPLATE/max_bug_report.yaml b/.github/ISSUE_TEMPLATE/max_bug_report.yaml new file mode 100644 index 0000000000..097602640a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/max_bug_report.yaml @@ -0,0 +1,55 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: MAX bug report +description: Create a bug report to help us improve MAX +title: "[BUG]: " +labels: + - "bug,max" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Include relevant code snippet or link to code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - Include anything else that might help us debug the issue. + validations: + required: true + + - type: textarea + id: Context + attributes: + label: System information + description: What version of MAX are you using? + value: | + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. + render: shell diff --git a/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml b/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml new file mode 100644 index 0000000000..65faa039e5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/max_builds_bug_report.yaml @@ -0,0 +1,53 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: MAX Builds model bug report +description: Report a bug with a model +title: "[BUG]: " +labels: + - max-builds +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: input + id: model-variant + attributes: + label: On which model did the bug occur? + description: Provide the model (and variant). + validations: + required: true + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Include relevant code snippet or link to code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - Include anything else that might help us debug the issue. + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/max_feature_request.yaml b/.github/ISSUE_TEMPLATE/max_feature_request.yaml new file mode 100644 index 0000000000..b9a61bd61a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/max_feature_request.yaml @@ -0,0 +1,49 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: MAX feature request +description: Suggest an enhancement for MAX +title: "[Feature Request]" +labels: + - "enhancement,max" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to suggest a MAX enhancement! + + Please enter a concise title above and fill out the following fields. + + - type: textarea + id: Request + attributes: + label: What is your request? + description: Describe how you'd like us to improve MAX. + validations: + required: true + + - type: textarea + id: Motivation + attributes: + label: What is your motivation for this change? + description: Describe the problem that your feature seeks to address (what is the value to the product/user?). + validations: + required: true + + - type: textarea + id: Description + attributes: + label: Any other details? + description: Perhaps some minimum functional attributes the implementation should include, or other context about your feature. + validations: + required: false diff --git a/.github/workflows/standard_library_tests_and_examples.yml b/.github/workflows/standard_library_tests_and_examples.yml index 2f13005fb3..980e1e8678 100644 --- a/.github/workflows/standard_library_tests_and_examples.yml +++ b/.github/workflows/standard_library_tests_and_examples.yml @@ -52,16 +52,17 @@ jobs: - name: Install build tools (Linux) if: ${{ matrix.os == 'ubuntu-latest' }} run: | - ./stdlib/scripts/install-build-tools-linux.sh + ./mojo/stdlib/scripts/install-build-tools-linux.sh - name: Install build tools (macOS) if: ${{ matrix.os == 'macos-14' }} run: | - ./stdlib/scripts/install-build-tools-macos.sh + ./mojo/stdlib/scripts/install-build-tools-macos.sh - name: Run standard library tests and examples env: MOJO_ENABLE_ASSERTIONS_IN_TESTS: ${{ matrix.mojo-enable-assertions }} + working-directory: mojo run: | magic run --frozen tests magic run --frozen examples diff --git a/.github/workflows/test_pre_commit.yml b/.github/workflows/test_pre_commit.yml index 99a2ddf73d..12ed62a50a 100644 --- a/.github/workflows/test_pre_commit.yml +++ b/.github/workflows/test_pre_commit.yml @@ -46,7 +46,6 @@ jobs: run: | pip install pre-commit pre-commit install - - - name: Run pre-commit - run: magic run pre-commit run --all-files + - name: Run pre-commit + run: magic run --manifest-path mojo pre-commit run --all-files diff --git a/.gitignore b/.gitignore index 81e5af8ff5..339f9c6cdc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,13 +1,104 @@ -# Build directory -/build - -# Reference: https://github.com/github/gitignore/blob/main/Python.gitignore - # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + # Environments .env .venv @@ -16,7 +107,51 @@ venv/ ENV/ env.bak/ venv.bak/ -.magic/ -# MacOS + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# numpy +*.npy + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# MacOS stuff .DS_Store + +# VS Code +.vscode + +# Downloaded example models +examples/models/* +!examples/models/README.md + +# Magic cache +.magic diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9ca3f26be6..0e7d167ade 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,3 +1,16 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + repos: - repo: local hooks: @@ -5,22 +18,22 @@ repos: name: mojo-format entry: mojo format language: system - files: '\.(mojo|🔥|py)$' + files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' stages: [commit] - id: check-docstrings name: check-docstrings - entry: python3 ./stdlib/scripts/check-docstrings.py + entry: python3 ./mojo/stdlib/scripts/check-docstrings.py language: system pass_filenames: false stages: [commit] - id: check-license name: check-license - entry: mojo stdlib/scripts/check_licenses.mojo + entry: mojo mojo/stdlib/scripts/check_licenses.mojo language: system - files: '\.(mojo|🔥|py)$' + files: '^(mojo|examples/mojo).*\.(mojo|🔥|py)$' stages: [commit] - repo: https://github.com/igorshubovych/markdownlint-cli rev: v0.40.0 hooks: - - id: markdownlint - args: ['--config', 'stdlib/scripts/.markdownlint.yaml', '--fix'] + - id: markdownlint + args: ["--config", "mojo/stdlib/scripts/.markdownlint.yaml", "--fix"] diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f4f5ad5a25..d6204fb411 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -1,4 +1,4 @@ -# Code of conduct +# Code of Conduct In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and @@ -7,7 +7,7 @@ body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation. -## Our standards +## Our Standards All community forums and spaces are meant for professional interactions that are friendly, inclusive, helpful, and collaborative. Examples of behavior that @@ -32,7 +32,7 @@ participants include: - Conduct which could reasonably be considered inappropriate for the forum in which it occurs. -## Our responsibilities +## Our Responsibilities Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in @@ -47,14 +47,14 @@ threatening, offensive, or harmful. ## Scope This Code of Conduct applies to all project content and public spaces on the -Mojo GitHub repo, the rest of Modular’s GitHub organization, and all other -official Mojo community spaces and communication mediums, whether offline or +MAX GitHub repo, the rest of Modular’s GitHub organization, and all other +official MAX community spaces and communication mediums, whether offline or online. ## Enforcement Instances of abusive, harassment, or otherwise unacceptable behavior should be -reported to the project team at . All complaints will +reported to the project team at . All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further diff --git a/LICENSE b/LICENSE index c1af4075d5..d972b8e80e 100644 --- a/LICENSE +++ b/LICENSE @@ -1,5 +1,5 @@ ============================================================================================== -The Mojo repository is licensed under the Apache License v2.0 with LLVM Exceptions: +The MAX repository is licensed under the Apache License v2.0 with LLVM Exceptions: ============================================================================================== Apache License diff --git a/README.md b/README.md index 2a4878c789..dec744d018 100644 --- a/README.md +++ b/README.md @@ -1,113 +1,111 @@ -
- +![Modular Logo](https://modular-assets.s3.amazonaws.com/images/modular_github_logo_bg.png) - [Website][Mojo] | [Getting Started] | [API Documentation] | [Contributing] | [Changelog] -
+# Welcome to MAX -[Mojo]: https://www.modular.com/mojo/ -[Getting Started]: https://docs.modular.com/mojo/manual/get-started/ -[API Documentation]: https://docs.modular.com/mojo/lib -[Contributing]: ./CONTRIBUTING.md -[Changelog]: ./docs/changelog.md +The Modular Accelerated Xecution ([MAX](https://www.modular.com/max)) platform +is an integrated suite of AI libraries, tools, and technologies that unifies +commonly fragmented AI deployment workflows. MAX accelerates time to market +for the latest innovations by giving AI developers a single toolchain that +unlocks full programmability, unparalleled performance, and seamless hardware portability. -# Welcome to Mojo 🔥 +![](https://docs.modular.com/images/github/max-stack.png) -Mojo is a new programming language that bridges the gap between research -and production by combining Python syntax and ecosystem with systems -programming and metaprogramming features. Mojo is still young, but it is -designed to write blazing-fast code for CPUs, GPUs, and more as part of -the [MAX Platform](https://www.modular.com/max). +[See here to get started with MAX](https://docs.modular.com/max/get-started) +and when you want to report issues or request features, +[please create a GitHub issue here](https://github.com/modular/max/issues/new/choose). -This repo includes source code for: +The [Discord](https://discord.gg/modular) community is the best place to share +your experiences and chat with the team and other community members. -- Mojo examples -- Mojo documentation hosted at [modular.com](https://docs.modular.com/mojo/) -- The [Mojo standard library](https://docs.modular.com/mojo/lib) +In the [examples directory](https://github.com/modular/max/tree/main/examples), +you will find code examples and Jupyter notebooks that show how to run inference +with MAX. -This repo has two primary branches: +## Getting Started -- The [`stable`](https://github.com/modular/mojo/tree/stable) branch, which -is in sync with the last stable released version of Mojo. Use the examples -here if you’re using a [release build of Mojo](#latest-released). +MAX is available in both stable and nightly builds. To install either version, +follow the guide to [create a project with +Magic](https://docs.modular.com/max/create-project). -- The [`main`](https://github.com/modular/mojo/tree/main) branch, which -is in sync with the Mojo nightly build and subject to breakage. Use this branch -for [contributions](./CONTRIBUTING.md), or if you're using the latest -[nightly build of Mojo](#latest-nightly). +Then clone this repository: -To learn more about Mojo, see the -[Mojo Manual](https://docs.modular.com/mojo/manual/). +```bash +git clone https://github.com/modular/max.git +``` -## Installing Mojo +If you installed the stable build (v24.6), be sure you switch to the `stable` branch, +because the `main` branch is for nightly releases and might not be compatible +with stable builds: -### Latest Released +```bash +git checkout stable +``` -To install the last released build of Mojo, follow the guide to -[Get started with Mojo](https://docs.modular.com/mojo/manual/get-started). +## Running -### Latest Nightly +### MAX Pipelines -The nightly Mojo builds are subject to breakage and provide an inside -view of how the development of Mojo is progressing. Use at your own risk -and be patient! +To show off the full power of MAX, a +[series of end-to-end pipelines for common AI workloads](./src/max/pipelines/) +(and more) are ready to run. As one example, this includes everything needed to +self-host +[the Llama 3.1 text-generation model](./src/max/pipelines/architectures/llama3/). +All code is provided so that these pipelines can be customized, built upon, or +learned from. -To get nightly builds, see the same instructions to [Get started with -Mojo](https://docs.modular.com/mojo/manual/get-started), but when you create -your project, instead use the following `magic init` command to set the -conda package channel to `max-nightly`: +### Examples -```bash -magic init hello-world-nightly --format mojoproject \ - -c conda-forge -c https://conda.modular.com/max-nightly -``` +In addition to the end-to-end pipelines, there are many [examples](./examples/) +that exercise various aspects of MAX. You can follow the instructions in the +README for each example or notebook you want to run. -Or, if you're [using conda](https://docs.modular.com/magic/conda), add the -`https://conda.modular.com/max-nightly/` channel to your `environment.yaml` -file. For example: +### Notebooks -```yaml -[project] -name = "Mojo nightly example" -channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] -platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +Check out the [notebooks examples](./examples/notebooks/) for using MAX Engine +🏎️ for models such as -[dependencies] -max = "*" -``` +- [Mistral-7B](./examples/notebooks/mistral7b-python-onnx.ipynb) +- [Roberta-pytorch](./examples/notebooks/roberta-python-pytorch.ipynb) -When you clone this repo, you'll be on the `main` branch by default, -which includes code matching the latest nightly build: +### Tutorials -```bash -git clone https://github.com/modular/mojo.git -``` +The [tutorials](./tutorials/) directory contains the "finished" code for +tutorials you can read at +[docs.modular.com/max/tutorials](https://docs.modular.com/max/tutorials). + +### Docker Container -If you want to instead see the source from the most recent stable -release, then you can switch to the `stable` branch. +The MAX container is our official Docker container for convenient MAX deployment. +It includes the latest MAX version with GPU support, several AI libraries, and +integrates with orchestration tools like Kubernetes. + +The MAX container image is available in the +[Modular Docker Hub repository](https://hub.docker.com/r/modular/max-openai-api/). ## Contributing -When you want to report issues or request features, [please create a GitHub -issue here](https://github.com/modular/mojo/issues). -See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. +Thanks for your interest in contributing to this repository! + +We accept contributions to the [Mojo standard library](./mojo). +Please see the [Contribution Guide](mojo/CONTRIBUTING.md) for instructions. + +We are not accepting contributions for other parts of the repository. -We welcome contributions to this repo on the -[`main`](https://github.com/modular/mojo/tree/main) -branch. If you’d like to contribute to Mojo, please first read our [Contributor -Guide](https://github.com/modular/mojo/blob/main/CONTRIBUTING.md). +We also welcome your bug reports. If you have a bug, please file an issue +[here](https://github.com/modular/max/issues/new/choose). -For more general questions or to chat with other Mojo developers, check out our -[Discord](https://discord.gg/modular). +If you need support, the [Discord](https://discord.gg/modular) +community is the best place to share your experiences and chat with +the team and other community members. ## License -This repository and its contributions are licensed under the Apache License v2.0 -with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). +This repository and its contributions are licensed under the Apache License +v2.0 with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). MAX and Mojo usage and distribution are licensed under the [MAX & Mojo Community License](https://www.modular.com/legal/max-mojo-license). -## Thanks to our contributors +### Third Party Licenses - - - +You are entirely responsible for checking and validating the licenses of +third parties (i.e. Huggingface) for related software and libraries that are downloaded. diff --git a/examples/testing/.gitattributes b/benchmark/.gitattributes similarity index 100% rename from examples/testing/.gitattributes rename to benchmark/.gitattributes diff --git a/benchmark/.gitignore b/benchmark/.gitignore new file mode 100644 index 0000000000..5ecf358c31 --- /dev/null +++ b/benchmark/.gitignore @@ -0,0 +1,7 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic +*.json +*.lock diff --git a/benchmark/README.md b/benchmark/README.md new file mode 100644 index 0000000000..b4b56ac55e --- /dev/null +++ b/benchmark/README.md @@ -0,0 +1,163 @@ +# Benchmark MAX Serve + +This directory contains tools to benchmark +[MAX Serve](https://docs.modular.com/max/serve/) performance. You can also use +these scripts to compare different LLM serving backends such as +[vLLM](https://github.com/vllm-project/vllm) and +[TensorRT-LLM](https://github.com/NVIDIA/TensorRT-LLM) against MAX. The +benchmarking tools measure throughput, latency, and resource utilization +metrics. + +Key features: + +- Tests any OpenAI-compatible HTTP endpoint +- Supports both chat and completion APIs +- Measures detailed latency metrics +- Works with hosted services + +> The `benchmark_serving.py` script is adapted from +> [vLLM](https://github.com/vllm-project/vllm/blob/main/benchmarks), +> licensed under Apache 2.0. We forked this script to ensure consistency with +> vLLM's measurement methodology and extended it with features we found helpful, +> such as client-side GPU metric collection via `nvitop`. + +## Table of contents + +- [Get started](#get-started) +- [Basic usage](#basic-usage) +- [Reference](#reference) +- [Troubleshooting](#troubleshooting) + +## Get started + +If this is your first time benchmarking a MAX Serve endpoint, +we recommend that you follow our [tutorial to benchmark MAX Serve on +a GPU](https://docs.modular.com/max/tutorials/benchmark-max-serve/). + +## Basic usage + +You can benchmark any HTTP endpoint that implements +OpenAI-compatible APIs as follows. + +First enter the local virtual environment: + +```cd +git clone -b stable https://github.com/modular/max.git + +cd max/benchmark + +magic shell +``` + +Then run the benchmark script while specifying your active +MAX Serve endpoint, model, and corresponding dataset to +use for benchmarking (for more detail, see our [benchmarking +tutorial](https://docs.modular.com/max/tutorials/benchmark-max-serve)): + +```bash +python benchmark_serving.py \ + --base-url https://company_url.xyz \ + --endpoint /v1/completions \ + --backend modular \ + --model meta-llama/Meta-Llama-3.1-8B-Instruct \ + --dataset-path ShareGPT_V3_unfiltered_cleaned_split.json \ + --num-prompts 500 +``` + +To exit the virtual environment shell simply run `exit`. + +### Output + +Results are saved in JSON format under the `results/` directory with the +following naming convention: + +```bash +{backend}-{request_rate}qps-{model_name}-{timestamp}.json +``` + +The output should look similar to the following: + +```bash +============ Serving Benchmark Result ============ +Successful requests: 500 +Failed requests: 0 +Benchmark duration (s): 46.27 +Total input tokens: 100895 +Total generated tokens: 106511 +Request throughput (req/s): 10.81 +Input token throughput (tok/s): 2180.51 +Output token throughput (tok/s): 2301.89 +---------------Time to First Token---------------- +Mean TTFT (ms): 15539.31 +Median TTFT (ms): 15068.37 +P99 TTFT (ms): 33034.17 +-----Time per Output Token (excl. 1st token)------ +Mean TPOT (ms): 34.23 +Median TPOT (ms): 28.47 +P99 TPOT (ms): 138.55 +---------------Inter-token Latency---------------- +Mean ITL (ms): 26.76 +Median ITL (ms): 5.42 +P99 ITL (ms): 228.45 +-------------------Token Stats-------------------- +Max input tokens: 933 +Max output tokens: 806 +Max total tokens: 1570 +--------------------GPU Stats--------------------- +GPU Utilization (%): 94.74 +Peak GPU Memory Used (MiB): 37228.12 +GPU Memory Available (MiB): 3216.25 +================================================== +``` + +### Key metrics explained + +- **Request throughput**: Number of complete requests processed per second +- **Input token throughput**: Number of input tokens processed per second +- **Output token throughput**: Number of tokens generated per second +- **TTFT**: Time to first token (TTFT), the time from request start to first +token generation +- **TPOT**: Time per output token (TPOT), the average time taken to generate +each output token +- **ITL**: Inter-token latency (ITL), the average time between consecutive token +or token-chunk generations +- **GPU utilization**: Percentage of time during which at least one GPU kernel +is being executed +- **Peak GPU memory used**: Peak memory usage during benchmark run + +## Reference + +### Command line arguments for `benchmark_serving.py` + +- Backend configuration: + - `--backend`: Choose from `modular` (MAX Serve), `vllm` (vLLM), or`trt-llm` + (TensorRT-LLM) + - `--model`: Hugging Face model ID or local path +- Load generation: + - `--num-prompts`: Number of prompts to process (default: `500`) + - `--request-rate`: Request rate in requests/second (default: `inf`) + - `--seed`: The random seed used to sample the dataset (default: `0`) +- Serving options + - `--base-url`: Base URL of the API service + - `--endpoint`: Specific API endpoint (`/v1/completions` or + `/v1/chat/completions`) + - `--tokenizer`: Hugging Face tokenizer to use (can be different from model) + - `--dataset-name`: (default:`sharegpt`) Real-world conversation data in the + form of variable length prompts and responses. ShareGPT is automatically + downloaded if not already present. +- Additional options + - `--collect-gpu-stats`: Report GPU utilization and memory consumption. + Only works when running `benchmark_serving.py` on the same instance as + the server, and only on NVIDIA GPUs. + +## Troubleshooting + +### Memory issues + +- Reduce batch size +- Check GPU memory availability: `nvidia-smi` + +### Permission issues + +- Verify `HF_TOKEN` is set correctly +- Ensure model access on Hugging Face diff --git a/benchmark/benchmark_serving.py b/benchmark/benchmark_serving.py new file mode 100644 index 0000000000..7d760c7d38 --- /dev/null +++ b/benchmark/benchmark_serving.py @@ -0,0 +1,1240 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Benchmark online serving throughput.""" + +import argparse +import asyncio +import json +import logging +import os +import random +import resource +import sys +import time +import traceback +import warnings +from argparse import ArgumentParser as FlexibleArgumentParser +from dataclasses import dataclass, field +from datetime import datetime +from typing import Any, AsyncGenerator, Dict, List, Optional, Tuple, Union + +import aiohttp +import numpy as np +from tqdm.asyncio import tqdm +from transformers import ( + AutoTokenizer, + PreTrainedTokenizer, + PreTrainedTokenizerBase, + PreTrainedTokenizerFast, +) + +# 10 minute timeout per request session +AIOHTTP_TIMEOUT = aiohttp.ClientTimeout(total=10 * 60) + +logger = logging.getLogger("benchmark_serving") + + +@dataclass +class RequestFuncInput: + prompt: str + api_url: str + prompt_len: int + output_len: int + model: str + + +@dataclass +class RequestFuncOutput: + generated_text: str = "" + success: bool = False + latency: float = 0.0 + ttft: float = 0.0 # Time to first token + itl: List[float] = field( + default_factory=list + ) # List of inter-token latencies + prompt_len: int = 0 + error: str = "" + + +def compute_output_len( + tokenizer: PreTrainedTokenizerBase, output: RequestFuncOutput +) -> int: + return len( + tokenizer( + output.generated_text, + add_special_tokens=False, + ).input_ids + ) + + +async def async_request_trt_llm( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith("generate_stream") + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + payload = { + "accumulate_tokens": True, + "text_input": request_func_input.prompt, + "temperature": 0.0, + "top_p": 1.0, + "max_tokens": request_func_input.output_len, + "stream": True, + } + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post(url=api_url, json=payload) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix( + chunk_bytes.decode("utf-8"), "data:" + ) + + data = json.loads(chunk) + output.generated_text += data["text_output"] + timestamp = time.perf_counter() + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append(timestamp - most_recent_timestamp) + + most_recent_timestamp = timestamp + + output.latency = most_recent_timestamp - st + output.success = True + + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +async def async_request_openai_completions( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith(("completions", "profile")), ( + "OpenAI Completions API URL must end with 'completions' or 'profile'." + ) + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + payload = { + "model": request_func_input.model, + "prompt": request_func_input.prompt, + "temperature": 0.0, + "best_of": 1, + "max_tokens": request_func_input.output_len, + "stream": True, + "ignore_eos": True, + } + + headers = { + "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}" + } + + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + generated_text = "" + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post( + url=api_url, json=payload, headers=headers + ) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix( + chunk_bytes.decode("utf-8"), "data: " + ) + latency = time.perf_counter() - st + if chunk == "[DONE]": + pass + else: + data = json.loads(chunk) + + # NOTE: Some completion API might have a last + # usage summary response without a token so we + # want to check a token was generated + if data["choices"][0]["text"]: + timestamp = time.perf_counter() + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append( + timestamp - most_recent_timestamp + ) + + most_recent_timestamp = timestamp + generated_text += data["choices"][0]["text"] + output.generated_text = generated_text + output.success = True + output.latency = latency + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + if pbar: + pbar.update(1) + return output + + +async def async_request_openai_chat_completions( + request_func_input: RequestFuncInput, + pbar: Optional[tqdm] = None, +) -> RequestFuncOutput: + api_url = request_func_input.api_url + assert api_url.endswith("chat/completions"), ( + "OpenAI Chat Completions API URL must end with 'chat/completions'." + ) + + async with aiohttp.ClientSession(timeout=AIOHTTP_TIMEOUT) as session: + payload = { + "model": request_func_input.model, + "messages": [ + { + "role": "user", + "content": request_func_input.prompt, + }, + ], + "temperature": 0.0, + "max_tokens": request_func_input.output_len, + "stream": True, + } + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ.get('OPENAI_API_KEY')}", + } + + output = RequestFuncOutput() + output.prompt_len = request_func_input.prompt_len + + generated_text = "" + ttft = 0.0 + st = time.perf_counter() + most_recent_timestamp = st + try: + async with session.post( + url=api_url, json=payload, headers=headers + ) as response: + if response.status == 200: + async for chunk_bytes in response.content: + chunk_bytes = chunk_bytes.strip() + if not chunk_bytes: + continue + + chunk = remove_prefix( + chunk_bytes.decode("utf-8"), "data: " + ) + latency = time.perf_counter() - st + if chunk == "[DONE]": + pass + else: + timestamp = time.perf_counter() + data = json.loads(chunk) + + delta = data["choices"][0]["delta"] + if delta.get("content", None): + # First token + if ttft == 0.0: + ttft = time.perf_counter() - st + output.ttft = ttft + + # Decoding phase + else: + output.itl.append( + timestamp - most_recent_timestamp + ) + + generated_text += delta["content"] + + most_recent_timestamp = timestamp + + output.generated_text = generated_text + output.success = True + output.latency = latency + else: + output.error = response.reason or "" + output.success = False + except Exception: + output.success = False + exc_info = sys.exc_info() + output.error = "".join(traceback.format_exception(*exc_info)) + + if pbar: + pbar.update(1) + return output + + +# Since vllm must support Python 3.8, we can't use str.removeprefix(prefix) +# introduced in Python 3.9 +def remove_prefix(text: str, prefix: str) -> str: + if text.startswith(prefix): + return text[len(prefix) :] + return text + + +def get_tokenizer( + pretrained_model_name_or_path: str, trust_remote_code: bool +) -> Union[PreTrainedTokenizer, PreTrainedTokenizerFast]: + return AutoTokenizer.from_pretrained( + pretrained_model_name_or_path, trust_remote_code=trust_remote_code + ) + + +ASYNC_REQUEST_FUNCS = { + "vllm": async_request_openai_completions, + "trt-llm": async_request_trt_llm, + "modular": async_request_openai_completions, + "modular-chat": async_request_openai_chat_completions, +} + + +# from https://github.com/sgl-project/sglang/blob/v0.4.0/python/sglang/bench_serving.py#L1283 +def set_ulimit(target_soft_limit=65535): + resource_type = resource.RLIMIT_NOFILE + current_soft, current_hard = resource.getrlimit(resource_type) + + if current_soft < target_soft_limit: + try: + resource.setrlimit(resource_type, (target_soft_limit, current_hard)) + except ValueError as e: + print(f"Fail to set RLIMIT_NOFILE: {e}") + + +@dataclass +class BenchmarkMetrics: + completed: int + failures: int + total_input: int + total_output: int + request_throughput: float + input_throughput: float + output_throughput: float + mean_ttft_ms: float + median_ttft_ms: float + std_ttft_ms: float + p99_ttft_ms: float + mean_tpot_ms: float + median_tpot_ms: float + std_tpot_ms: float + p99_tpot_ms: float + mean_itl_ms: float + median_itl_ms: float + std_itl_ms: float + p99_itl_ms: float + max_input: int + max_output: int + max_total: int + peak_gpu_memory_mib: float # 'benchmark/gpu:0/memory_used (MiB)/max' + available_gpu_memory_mib: float # 'benchmark/gpu:0/memory_free (MiB)/min' + gpu_utilization: float # 'benchmark/gpu:0/gpu_utilization (%)/mean' + + +def sample_sharegpt_requests( + dataset_path: str, + num_requests: int, + tokenizer: PreTrainedTokenizerBase, + fixed_output_len: Optional[int] = None, +) -> List[Tuple[str, int, int]]: + if fixed_output_len is not None and fixed_output_len < 4: + raise ValueError("output_len too small") + # Load the dataset. + with open(dataset_path) as f: + dataset = json.load(f) + # Filter out the conversations with less than 2 turns. + dataset = [data for data in dataset if len(data["conversations"]) >= 2] + # Only keep the first two turns of each conversation. + dataset = [ + (data["conversations"][0]["value"], data["conversations"][1]["value"]) + for data in dataset + ] + + # Shuffle the dataset. + random.shuffle(dataset) + + # Filter out sequences that are too long or too short + filtered_dataset: List[Tuple[str, int, int]] = [] + for i in range(len(dataset)): + if len(filtered_dataset) == num_requests: + break + + # Tokenize the prompts and completions. + prompt = dataset[i][0] + prompt_token_ids = tokenizer(prompt).input_ids + completion = dataset[i][1] + completion_token_ids = tokenizer(completion).input_ids + prompt_len = len(prompt_token_ids) + output_len = ( + len(completion_token_ids) + if fixed_output_len is None + else fixed_output_len + ) + if prompt_len < 4 or output_len < 4: + # Prune too short sequences. + continue + if prompt_len > 1024 or prompt_len + output_len > 2048: + # Prune too long sequences. + continue + filtered_dataset.append((prompt, prompt_len, output_len)) + + return filtered_dataset + + +def sample_sonnet_requests( + dataset_path: str, + num_requests: int, + input_len: int, + output_len: int, + prefix_len: int, + tokenizer: PreTrainedTokenizerBase, +) -> List[Tuple[str, str, int, int]]: + assert input_len > prefix_len, ( + "'args.sonnet-input-len' must be greater than 'args.prefix-input-len'." + ) + + # Load the dataset. + with open(dataset_path) as f: + poem_lines = f.readlines() + + # Tokenize the poem lines. + poem_token_ids = tokenizer(poem_lines).input_ids + average_poem_len = sum( + len(token_ids) for token_ids in poem_token_ids + ) / len(poem_token_ids) + + # Base prefix for all requests. + base_prompt = "Pick as many lines as you can from these poem lines:\n" + base_message = [ + { + "role": "user", + "content": base_prompt, + } + ] + base_prompt_formatted = tokenizer.apply_chat_template( + base_message, add_generation_prompt=True, tokenize=False + ) + base_prompt_offset = len(tokenizer(base_prompt_formatted).input_ids) + + assert input_len > base_prompt_offset, ( + f"Please set 'args.sonnet-input-len' higher than {base_prompt_offset}." + ) + num_input_lines = round((input_len - base_prompt_offset) / average_poem_len) + + # First approximately `prefix_len` number of tokens in the + # prompt are fixed poem lines. + assert prefix_len > base_prompt_offset, ( + f"Please set 'args.sonnet-prefix-len' higher than {base_prompt_offset}." + ) + + num_prefix_lines = round( + (prefix_len - base_prompt_offset) / average_poem_len + ) + prefix_lines = poem_lines[:num_prefix_lines] + + # Sample the rest of lines per request. + sampled_requests: List[Tuple[str, str, int, int]] = [] + for _ in range(num_requests): + sampled_lines = "".join( + prefix_lines + + random.sample(poem_lines, num_input_lines - num_prefix_lines) + ) + + prompt = f"{base_prompt}{sampled_lines}" + message = [ + { + "role": "user", + "content": prompt, + }, + ] + prompt_formatted = tokenizer.apply_chat_template( + message, add_generation_prompt=True, tokenize=False + ) + prompt_len = len(tokenizer(prompt_formatted).input_ids) + sampled_requests.append( + (prompt, prompt_formatted, prompt_len, output_len) + ) + + return sampled_requests + + +def sample_random_requests( + input_len: int, + output_len: int, + num_prompts: int, + range_ratio: float, + tokenizer: PreTrainedTokenizerBase, +) -> List[Tuple[str, int, int]]: + input_lens = np.random.randint( + int(input_len * range_ratio), + input_len + 1, + size=num_prompts, + ) + output_lens = np.random.randint( + int(output_len * range_ratio), + output_len + 1, + size=num_prompts, + ) + offsets = np.random.randint(0, tokenizer.vocab_size, size=num_prompts) + input_requests = [] + for i in range(num_prompts): + prompt = tokenizer.decode( + [ + (offsets[i] + i + j) % tokenizer.vocab_size + for j in range(input_lens[i]) + ] + ) + input_requests.append((prompt, int(input_lens[i]), int(output_lens[i]))) + + return input_requests + + +async def get_request( + input_requests: List[Tuple[str, int, int]], + request_rate: float, +) -> AsyncGenerator[Tuple[str, int, int], None]: + for request in input_requests: + yield request + + if request_rate == float("inf"): + # If the request rate is infinity, then we don't need to wait. + continue + + # Sample the request interval from the exponential distribution. + interval = np.random.exponential(1.0 / request_rate) + # The next request will be sent after the interval. + await asyncio.sleep(interval) + + +def calculate_metrics( + input_requests: List[Tuple[str, int, int]], + outputs: List[RequestFuncOutput], + dur_s: float, + tokenizer: PreTrainedTokenizerBase, + gpu_metrics: Dict[str, Any], +) -> Tuple[BenchmarkMetrics, List[int]]: + actual_output_lens: List[int] = [] + total_input = 0 + completed = 0 + max_input = 0 + max_output = 0 + max_total = 0 + failures = 0 + failed_responses = [] + itls: List[float] = [] + tpots: List[float] = [] + ttfts: List[float] = [] + for i in range(len(outputs)): + if outputs[i].success: + # We use the tokenizer to count the number of output tokens for all + # serving backends instead of looking at len(outputs[i].itl) since + # multiple output tokens may be bundled together + # Note : this may inflate the output token count slightly + output_len = compute_output_len(tokenizer, outputs[i]) + actual_output_lens.append(output_len) + total_input += input_requests[i][1] + if output_len > 1: + tpots.append( + (outputs[i].latency - outputs[i].ttft) / (output_len - 1) + ) + itls += outputs[i].itl + ttfts.append(outputs[i].ttft) + completed += 1 + max_input = max(max_input, input_requests[i][1]) + max_output = max(max_output, output_len) + max_total = max(max_total, input_requests[i][1] + output_len) + else: + actual_output_lens.append(0) + failures = failures + 1 + failed_responses.append(outputs[i]) + + if failures != 0: + warnings.warn( + ( + "Some requests failed. The responses returned are displayed " + "below. Please check server logs for more information." + ), + stacklevel=2, + ) + for f in failed_responses: + logger.error(f"Failed :: {f}") + + if completed == 0: + warnings.warn( + ( + "All requests failed. This is likely due to a misconfiguration " + "on the benchmark arguments." + ), + stacklevel=2, + ) + metrics = BenchmarkMetrics( + completed=completed, + failures=failures, + total_input=total_input, + total_output=sum(actual_output_lens), + request_throughput=completed / dur_s, + input_throughput=total_input / dur_s, + output_throughput=sum(actual_output_lens) / dur_s, + mean_ttft_ms=float(np.mean(ttfts or 0)) + * 1000, # ttfts is empty if streaming is not supported by backend + median_ttft_ms=float(np.median(ttfts or 0)) * 1000, + std_ttft_ms=float(np.std(ttfts or 0)) * 1000, + p99_ttft_ms=float(np.percentile(ttfts or 0, 99)) * 1000, + mean_tpot_ms=float(np.mean(tpots or 0)) * 1000, + median_tpot_ms=float(np.median(tpots or 0)) * 1000, + std_tpot_ms=float(np.std(tpots or 0)) * 1000, + p99_tpot_ms=float(np.percentile(tpots or 0, 99)) * 1000, + mean_itl_ms=float(np.mean(itls or 0)) * 1000, + median_itl_ms=float(np.median(itls or 0)) * 1000, + std_itl_ms=float(np.std(itls or 0)) * 1000, + p99_itl_ms=float(np.percentile(itls or 0, 99)) * 1000, + max_input=max_input, + max_output=max_output, + max_total=max_total, + peak_gpu_memory_mib=float( + gpu_metrics.get("benchmark/gpu:0/memory_used (MiB)/max") or 0 + ), + available_gpu_memory_mib=float( + gpu_metrics.get("benchmark/gpu:0/memory_free (MiB)/min") or 0 + ), + gpu_utilization=float( + gpu_metrics.get("benchmark/gpu:0/gpu_utilization (%)/mean") or 0 + ), + ) + + return metrics, actual_output_lens + + +async def benchmark( + backend: str, + api_url: str, + base_url: str, + model_id: str, + tokenizer: PreTrainedTokenizerBase, + input_requests: List[Tuple[str, int, int]], + request_rate: float, + disable_tqdm: bool, + do_test_prompt: bool, + collect_gpu_stats: bool, + print_inputs_and_outputs: bool, +): + if backend in ASYNC_REQUEST_FUNCS: + request_func = ASYNC_REQUEST_FUNCS[backend] + else: + raise ValueError(f"Unknown backend: {backend}") + + if do_test_prompt: + logger.info("Starting initial single prompt test run...") + test_prompt, test_prompt_len, test_output_len = input_requests[0] + test_input = RequestFuncInput( + model=model_id, + prompt=test_prompt, + api_url=api_url, + prompt_len=test_prompt_len, + output_len=test_output_len, + ) + test_output = await request_func( + request_func_input=test_input, + ) + if not test_output.success: + raise ValueError( + "Initial test run failed - Please make sure benchmark" + " arguments are correctly specified. Error:" + f" {test_output.error}" + ) + else: + logger.info( + "Initial test run completed. Starting main benchmark run..." + ) + + logger.info(f"Traffic request rate: {request_rate}") + + pbar = None if disable_tqdm else tqdm(total=len(input_requests)) + if collect_gpu_stats: + from nvitop import ResourceMetricCollector + + collector = ResourceMetricCollector() + collector.start("benchmark") + + benchmark_start_time = time.perf_counter_ns() + tasks: List[asyncio.Task] = [] + async for request in get_request(input_requests, request_rate): + prompt, prompt_len, output_len = request + request_func_input = RequestFuncInput( + model=model_id, + prompt=prompt, + api_url=api_url, + prompt_len=prompt_len, + output_len=output_len, + ) + tasks.append( + asyncio.create_task( + request_func( + request_func_input=request_func_input, + pbar=pbar, + ) + ) + ) + outputs: List[RequestFuncOutput] = await asyncio.gather(*tasks) + + if pbar is not None: + pbar.close() + + benchmark_duration = (time.perf_counter_ns() - benchmark_start_time) / 1e9 + + if print_inputs_and_outputs: + print("Generated output text:") + for req_id, output in enumerate(outputs): + output_len = compute_output_len(tokenizer, output) + print( + { + "req_id": req_id, + "output_len": output_len, + "output": output.generated_text, + } + ) + + if collect_gpu_stats: + gpu_metrics = collector.collect() + collector.stop() + else: + gpu_metrics = {} + + metrics, actual_output_lens = calculate_metrics( + input_requests=input_requests, + outputs=outputs, + dur_s=benchmark_duration, + tokenizer=tokenizer, + gpu_metrics=gpu_metrics, + ) + + print("{s:{c}^{n}}".format(s=" Serving Benchmark Result ", n=50, c="=")) + print("{:<40} {:<10}".format("Successful requests:", metrics.completed)) + print("{:<40} {:<10}".format("Failed requests:", metrics.failures)) + print( + "{:<40} {:<10.2f}".format("Benchmark duration (s):", benchmark_duration) + ) + print("{:<40} {:<10}".format("Total input tokens:", metrics.total_input)) + print( + "{:<40} {:<10}".format("Total generated tokens:", metrics.total_output) + ) + print( + "{:<40} {:<10.2f}".format( + "Request throughput (req/s):", metrics.request_throughput + ) + ) + print( + "{:<40} {:<10.2f}".format( + "Input token throughput (tok/s):", metrics.input_throughput + ) + ) + print( + "{:<40} {:<10.2f}".format( + "Output token throughput (tok/s):", metrics.output_throughput + ) + ) + print("{s:{c}^{n}}".format(s="Time to First Token", n=50, c="-")) + print("{:<40} {:<10.2f}".format("Mean TTFT (ms):", metrics.mean_ttft_ms)) + print( + "{:<40} {:<10.2f}".format("Median TTFT (ms):", metrics.median_ttft_ms) + ) + print("{:<40} {:<10.2f}".format("P99 TTFT (ms):", metrics.p99_ttft_ms)) + print( + "{s:{c}^{n}}".format( + s="Time per Output Token (excl. 1st token)", n=50, c="-" + ) + ) + print("{:<40} {:<10.2f}".format("Mean TPOT (ms):", metrics.mean_tpot_ms)) + print( + "{:<40} {:<10.2f}".format("Median TPOT (ms):", metrics.median_tpot_ms) + ) + print("{:<40} {:<10.2f}".format("P99 TPOT (ms):", metrics.p99_tpot_ms)) + print("{s:{c}^{n}}".format(s="Inter-token Latency", n=50, c="-")) + print("{:<40} {:<10.2f}".format("Mean ITL (ms):", metrics.mean_itl_ms)) + print("{:<40} {:<10.2f}".format("Median ITL (ms):", metrics.median_itl_ms)) + print("{:<40} {:<10.2f}".format("P99 ITL (ms):", metrics.p99_itl_ms)) + print("{s:{c}^{n}}".format(s="Token Stats", n=50, c="-")) + print("{:<40} {:<10}".format("Max input tokens:", metrics.max_input)) + print("{:<40} {:<10}".format("Max output tokens:", metrics.max_output)) + print("{:<40} {:<10}".format("Max total tokens:", metrics.max_total)) + if collect_gpu_stats: + print("{s:{c}^{n}}".format(s="GPU Stats", n=50, c="-")) + print( + "{:<40} {:<10.2f}".format( + "GPU Utilization (%):", metrics.gpu_utilization + ) + ) + print( + "{:<40} {:<10.2f}".format( + "Peak GPU Memory Used (MiB):", metrics.peak_gpu_memory_mib + ) + ) + print( + "{:<40} {:<10.2f}".format( + "GPU Memory Available (MiB):", metrics.available_gpu_memory_mib + ) + ) + + print("=" * 50) + + result = { + "duration": benchmark_duration, + "completed": metrics.completed, + "total_input_tokens": metrics.total_input, + "total_output_tokens": metrics.total_output, + "request_throughput": metrics.request_throughput, + "input_throughput": metrics.input_throughput, + "output_throughput": metrics.output_throughput, + "mean_ttft_ms": metrics.mean_ttft_ms, + "median_ttft_ms": metrics.median_ttft_ms, + "std_ttft_ms": metrics.std_ttft_ms, + "p99_ttft_ms": metrics.p99_ttft_ms, + "mean_tpot_ms": metrics.mean_tpot_ms, + "median_tpot_ms": metrics.median_tpot_ms, + "std_tpot_ms": metrics.std_tpot_ms, + "p99_tpot_ms": metrics.p99_tpot_ms, + "mean_itl_ms": metrics.mean_itl_ms, + "median_itl_ms": metrics.median_itl_ms, + "std_itl_ms": metrics.std_itl_ms, + "p99_itl_ms": metrics.p99_itl_ms, + "input_lens": [output.prompt_len for output in outputs], + "output_lens": actual_output_lens, + "ttfts": [output.ttft for output in outputs], + "itls": [output.itl for output in outputs], + "generated_texts": [output.generated_text for output in outputs], + "errors": [output.error for output in outputs], + "peak_gpu_memory_mib": metrics.peak_gpu_memory_mib, + "available_gpu_memory_mib": metrics.available_gpu_memory_mib, + "gpu_utilization": metrics.gpu_utilization, + } + return result + + +def main(args: argparse.Namespace): + logging.basicConfig( + format="%(asctime)s.%(msecs)03d %(levelname)s: %(name)s: %(message)s", + datefmt="%H:%M:%S", + level=logging.INFO, + ) + + logger.info(args) + random.seed(args.seed) + np.random.seed(args.seed) + # benchmarks can create a large number of concurrent in-flight requests + # so bump the file limit to make room for them + set_ulimit() + + backend = args.backend + model_id = args.model + tokenizer_id = args.tokenizer if args.tokenizer is not None else args.model + + if args.base_url is not None: + api_url = f"{args.base_url}{args.endpoint}" + base_url = f"{args.base_url}" + else: + api_url = f"http://{args.host}:{args.port}{args.endpoint}" + base_url = f"http://{args.host}:{args.port}" + + logger.info(f"getting tokenizer. api url: {api_url}, base_url: {base_url}") + tokenizer = get_tokenizer( + tokenizer_id, trust_remote_code=args.trust_remote_code + ) + + logger.info("sampling requests") + if args.dataset is not None: + warnings.warn( + ( + "The '--dataset' argument will be deprecated in the next " + "release. Please use '--dataset-name' and " + "'--dataset-path' in the future runs." + ), + stacklevel=2, + ) + input_requests = sample_sharegpt_requests( + dataset_path=args.dataset, + num_requests=args.num_prompts, + tokenizer=tokenizer, + fixed_output_len=args.sharegpt_output_len, + ) + + elif args.dataset_name == "sharegpt": + input_requests = sample_sharegpt_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + tokenizer=tokenizer, + fixed_output_len=args.sharegpt_output_len, + ) + + elif args.dataset_name == "sonnet": + # Sample sonnet requests with common parameters + sonnet_requests = sample_sonnet_requests( + dataset_path=args.dataset_path, + num_requests=args.num_prompts, + input_len=args.sonnet_input_len, + output_len=args.sonnet_output_len, + prefix_len=args.sonnet_prefix_len, + tokenizer=tokenizer, + ) + + # Do not format the prompt, pass to message directly + if args.backend == "openai-chat": + # For chat API, use raw prompt without formatting + input_requests = [ + (prompt, prompt_len, output_len) + for prompt, _, prompt_len, output_len in sonnet_requests + ] + else: + # For non-chat API, ensure model has chat template and use formatted prompt + assert tokenizer.chat_template or tokenizer.default_chat_template, ( + "Tokenizer/model must have chat template for sonnet dataset." + ) + input_requests = [ + (prompt_formatted, prompt_len, output_len) + for _, prompt_formatted, prompt_len, output_len in sonnet_requests + ] + + elif args.dataset_name == "random": + input_requests = sample_random_requests( + input_len=args.random_input_len, + output_len=args.random_output_len, + num_prompts=args.num_prompts, + range_ratio=args.random_range_ratio, + tokenizer=tokenizer, + ) + + else: + raise ValueError(f"Unknown dataset: {args.dataset_name}") + + if args.print_inputs_and_outputs: + print("Input prompts:") + for req_id, (prompt_formatted, prompt_len, output_len) in enumerate( + input_requests + ): + print( + { + "req_id": req_id, + "output_len": output_len, + "prompt_len": prompt_len, + "prompt": prompt_formatted, + } + ) + + logger.info("starting benchmark run") + benchmark_result = asyncio.run( + benchmark( + backend=backend, + api_url=api_url, + base_url=base_url, + model_id=model_id, + tokenizer=tokenizer, + input_requests=input_requests, + request_rate=args.request_rate, + disable_tqdm=args.disable_tqdm, + do_test_prompt=not args.skip_test_prompt, + collect_gpu_stats=args.collect_gpu_stats, + print_inputs_and_outputs=args.print_inputs_and_outputs, + ) + ) + + # Benchmark run failed if any failed requests + if args.num_prompts != benchmark_result["completed"]: + logger.info("finished benchmark run: Failed.") + sys.exit(1) + + # Save config and results to json + if args.save_result: + logger.info("saving results") + result_json: Dict[str, Any] = {} + + # Setup + current_dt = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + result_json["date"] = current_dt + result_json["backend"] = backend + result_json["model_id"] = model_id + result_json["tokenizer_id"] = tokenizer_id + result_json["num_prompts"] = args.num_prompts + result_json["server_args"] = args.server_args + result_json["dataset_name"] = args.dataset_name + + # Metadata + if args.metadata: + for item in args.metadata: + if "=" in item: + kvstring = item.split("=") + result_json[kvstring[0].strip()] = kvstring[1].strip() + else: + raise ValueError( + "Invalid metadata format. Please use KEY=VALUE format." + ) + + # Traffic + result_json["request_rate"] = ( + args.request_rate if args.request_rate < float("inf") else "inf" + ) + + # Merge with benchmark result + result_json = {**result_json, **benchmark_result} + + # Save to file + base_model_id = model_id.split("/")[-1] + file_name = f"{backend}-{args.request_rate}qps-{base_model_id}-{current_dt}.json" # noqa + if args.result_filename: + file_name = args.result_filename + if args.result_dir: + file_name = os.path.join(args.result_dir, file_name) + with open(file_name, "w") as outfile: + json.dump(result_json, outfile) + + logger.info("finished benchmark run: Success.") + + +if __name__ == "__main__": + parser = FlexibleArgumentParser( + description="Benchmark the online serving throughput." + ) + parser.add_argument( + "--backend", + type=str, + default="modular", + choices=list(ASYNC_REQUEST_FUNCS.keys()), + ) + parser.add_argument( + "--base-url", + type=str, + default=None, + help="Server or API base url if not using http host and port.", + ) + parser.add_argument("--host", type=str, default="localhost") + parser.add_argument("--port", type=int, default=8000) + parser.add_argument( + "--endpoint", + type=str, + default="/v1/completions", + help="API endpoint.", + ) + parser.add_argument( + "--dataset", + type=str, + default=None, + help=( + "Path to the ShareGPT dataset, will be deprecated in the " + "next release." + ), + ) + parser.add_argument( + "--dataset-name", + type=str, + default="sharegpt", + choices=["sharegpt", "sonnet", "random"], + help="Name of the dataset to benchmark on.", + ) + parser.add_argument( + "--dataset-path", type=str, default=None, help="Path to the dataset." + ) + parser.add_argument( + "--model", + type=str, + required=True, + help="Name of the model.", + ) + parser.add_argument( + "--tokenizer", + type=str, + help=( # noqa: E501 + "Name or path of the tokenizer, if not using the default tokenizer." + ), + ) + parser.add_argument( + "--num-prompts", + type=int, + default=1000, + help="Number of prompts to process.", + ) + parser.add_argument( + "--sharegpt-output-len", + type=int, + default=None, + help=( + "Output length for each request. Overrides the output length " + "from the ShareGPT dataset." + ), + ) + parser.add_argument( + "--sonnet-input-len", + type=int, + default=550, + help=( + "Number of input tokens per request, used only for sonnet dataset." + ), + ) + parser.add_argument( + "--sonnet-output-len", + type=int, + default=150, + help=( + "Number of output tokens per request, used only for sonnet dataset." + ), + ) + parser.add_argument( + "--sonnet-prefix-len", + type=int, + default=200, + help=( + "Number of prefix tokens per request, used only for sonnet dataset." + ), + ) + parser.add_argument( + "--random-input-len", + type=int, + default=1024, + help=( + "Number of input tokens per request, used only for random sampling." + ), + ) + parser.add_argument( + "--random-output-len", + type=int, + default=128, + help=( + "Number of output tokens per request, used only for random" + " sampling." + ), + ) + parser.add_argument( + "--random-range-ratio", + type=float, + default=1.0, + help=( + "Range of sampled ratio of input/output length, " + "used only for random sampling." + ), + ) + parser.add_argument( + "--request-rate", + type=float, + default=float("inf"), + help=( + "Number of requests per second. If this is inf, " + "then all the requests are sent at time 0. " + "Otherwise, we use Poisson process to synthesize " + "the request arrival times." + ), + ) + parser.add_argument("--seed", type=int, default=0) + parser.add_argument( + "--trust-remote-code", + action="store_true", + help="Trust remote code from huggingface", + ) + parser.add_argument( + "--disable-tqdm", + action="store_true", + help="Specify to disable tqdm progress bar.", + ) + parser.add_argument( + "--skip-test-prompt", + action="store_true", + help="Skip the test prompt. Useful when doing external profiling.", + ) + parser.add_argument( + "--collect-gpu-stats", + action="store_true", + help="Collect GPU stats with NVML (NVIDIA only).", + ) + parser.add_argument( + "--save-result", + action="store_true", + help="Specify to save benchmark results to a json file", + ) + parser.add_argument( + "--metadata", + metavar="KEY=VALUE", + nargs="*", + help=( + "Key-value pairs (e.g, --metadata version=0.3.3 tp=1) " + "for metadata of this run to be saved in the result JSON file " + "for record keeping purposes." + ), + ) + parser.add_argument( + "--result-dir", + type=str, + default=None, + help=( + "Specify directory to save benchmark json results." + "If not specified, results are saved in the current directory." + ), + ) + parser.add_argument( + "--result-filename", + type=str, + default=None, + help=( + "Specify the filename to save benchmark json results." + "If not specified, results will be saved in " + "{backend}-{args.request_rate}qps-{base_model_id}-{current_dt}.json" + " format." + ), + ) + parser.add_argument( + "--print-inputs-and-outputs", + action="store_true", + help="Print all input and outputs to console.", + ) + + parser.add_argument( + "--server-args", + type=str, + default="", + help="Server args", + ) + + args = parser.parse_args() + main(args) diff --git a/benchmark/pyproject.toml b/benchmark/pyproject.toml new file mode 100644 index 0000000000..af102c505f --- /dev/null +++ b/benchmark/pyproject.toml @@ -0,0 +1,32 @@ +[project] +authors = [{ name = "Modular", email = "hello@modular.com" }] +dependencies = [ + "aiohttp>=3.11.10,<4", + "huggingface-hub>=0.26.5,<0.27", + "hf-transfer>=0.1.8,<0.2", + "numpy>=2.2.0,<3", + "tqdm>=4.67.1,<5", + "transformers>=4.47.0,<5", + "nvitop>=1.3.2,<2", + "jinja2>=3.1.4,<4", +] +description = "MAX Serve benchmarking tools" +name = "benchmarking" +requires-python = ">=3.9,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.hatch.build.targets.wheel] +packages = ["."] + +[tool.pixi.project] +channels = ["conda-forge", "https://conda.modular.com/max"] +platforms = ["osx-arm64", "linux-64", "linux-aarch64"] + +[tool.pixi.pypi-dependencies] +benchmarking = { path = ".", editable = true } + +[tool.pixi.tasks] diff --git a/benchmark/requirements.txt b/benchmark/requirements.txt new file mode 100644 index 0000000000..8f2b35964d --- /dev/null +++ b/benchmark/requirements.txt @@ -0,0 +1,8 @@ +aiohttp +huggingface_hub[hf_transfer] +huggingface_hub +numpy +tqdm +transformers +nvitop +Jinja2 diff --git a/examples/README.md b/examples/README.md index 6c651cd92d..b4f2e87907 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,48 +1,44 @@ -# Mojo code examples +# MAX examples -A collection of sample programs written in the -[Mojo](https://docs.modular.com/mojo/manual/) programming language. - -## Getting Started +These examples demonstrate the power and flexibility of +[MAX](https://docs.modular.com/max/). They include: -The easiest way to get started with Mojo is to install the Magic package and -virtual environment manager. By following the instructions in [Get started with -Magic](https://docs.modular.com/magic/), you can quickly install Magic and use -it to create a virtual environment for Mojo programming. Alternatively, you can -follow the instructions for how to [Add MAX/Mojo to a conda -project](https://docs.modular.com/magic/conda). +## [Mojo code examples](mojo/) -After you have set up a Mojo programming environment, you can then use `git` to -clone this repository of Mojo samples using the command below: +A collection of sample programs written in the +[Mojo](https://docs.modular.com/mojo/manual/) programming language. -```bash -git clone https://github.com/modular/mojo.git -``` +## [Custom GPU and CPU operations in Mojo](custom_ops/) -## Running +The [MAX Graph API](https://docs.modular.com/max/graph/) provides a powerful +framework for staging computational graphs to be run on GPUs, CPUs, and more. +Each operation in one of these graphs is defined in +[Mojo](https://docs.modular.com/mojo/), an easy-to-use language for writing +high-performance code. -If you're using [`magic`](https://docs.modular.com/magic), navigate into -the `examples` directory and use `magic run` to invoke `mojo` and run the basic -example programs. For example: +The examples here illustrate how to construct custom graph operations in Mojo +that run on GPUs and CPUs, as well as how to build computational graphs that +contain and run them on different hardware architectures. -```bash -magic run mojo matmul.mojo -``` +## [Compiling and running Mojo functions on a GPU](gpu_functions/) -You'll also find several complete Mojo projects as subdirectories of the -`examples` directory. +In addition to placing custom Mojo functions within a computational graph, the +MAX Driver API can handle direct compilation of GPU functions written in Mojo +and can dispatch them onto the GPU. This is a programming model that may be +familiar to those who have worked with CUDA or similar GPGPU frameworks. -## License +These examples show how to compile and run Mojo functions, from simple to +complex, on an available GPU. Note that +[a MAX-compatible GPU](https://docs.modular.com/max/faq/#gpu-requirements) will +be necessary to build and run these. -The Mojo examples in this repository are licensed under the Apache License v2.0 -with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). +## [PyTorch and ONNX inference on MAX](inference/) -## Contributing +MAX has the power to accelerate existing PyTorch and ONNX models directly, and +provides Python, Mojo, and C APIs for this. These examples showcase common +models from these frameworks and how to run them even faster via MAX. -As a contributor, your efforts and expertise are invaluable in driving the -evolution of the Mojo programming language. The [Mojo contributor -guide](../CONTRIBUTING.md) provides all the information necessary to make -meaningful contributions—from understanding the submission process to -adhering to best practices: +## [Jupyter notebooks](notebooks/) -- [Mojo contributor guide](../CONTRIBUTING.md) +Jupyter notebooks that showcase PyTorch and ONNX models being accelerated +through MAX. diff --git a/examples/console.py b/examples/console.py new file mode 100644 index 0000000000..be8b77485a --- /dev/null +++ b/examples/console.py @@ -0,0 +1,179 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import subprocess +from enum import Enum +from pathlib import Path +from typing import List, Optional, Tuple + +try: + from rich.console import Console + from rich.prompt import Confirm + from rich.table import Table + +except ImportError: + print("rich not found. Installing rich...") + subprocess.run(["python3", "-m", "pip", "install", "rich"]) + from rich.console import Console + from rich.prompt import Confirm + from rich.table import Table + +ROOT = Path(os.path.dirname(__file__)) +RETRIES = 10 +EXCEEDED_RETRY_ERROR = ( + "Exceeded the number of retries. Please re-run the console again and follow" + " the prompt." +) + + +def list_repositories() -> List[Tuple[str, str]]: + repos = [] + for top_repo in os.listdir(ROOT): + # Skip notebook folder and files + if "notebook" in top_repo or not os.path.isdir(top_repo): + continue + + repo = os.path.join(ROOT, top_repo) + for r in os.listdir(repo): + full_path = os.path.join(repo, r) + if os.path.isdir(full_path) and os.path.exists( + os.path.join(full_path, "run.sh") + ): + repos.append((os.path.join(top_repo, r), full_path)) + + repos = sorted(repos, key=lambda x: x[0]) + return repos + + +class InputState(Enum): + PROMPT_INPUT = 0 + VALIDATE_INPUT = 1 + CHECK_RANGE = 2 + + +def prompt_validation( + console: Console, retries: int, repos: List[Tuple[str, str]] +) -> Optional[Tuple[str, str]]: + state = InputState.PROMPT_INPUT + selected_index = None + n_repos = len(repos) + while retries > 0: + if state == InputState.PROMPT_INPUT: + selected_index = console.input( + "Enter the index of an example to run: " + ) + state = InputState.VALIDATE_INPUT + elif state == InputState.VALIDATE_INPUT: + if not selected_index.strip(): + selected_index = console.input( + f"Please enter an index between {0}-{n_repos - 1}: " + ) + retries -= 1 + if retries <= 0: + console.print(EXCEEDED_RETRY_ERROR, style="red") + return None + else: + continue + + try: + selected_index = int(selected_index) + state = InputState.CHECK_RANGE + except ValueError: + selected_index = console.input( + f"The index must be an integer between {0}-{n_repos - 1}: " + ) + retries -= 1 + if retries <= 0: + console.print(EXCEEDED_RETRY_ERROR, style="red") + return None + else: + state = InputState.VALIDATE_INPUT + continue + + elif state == InputState.CHECK_RANGE: + if 0 <= selected_index < n_repos: + return repos[selected_index] + else: + selected_index = console.input( + f"Please enter an index between {0}-{n_repos - 1}: " + ) + retries -= 1 + if retries <= 0: + console.print(EXCEEDED_RETRY_ERROR, style="red") + return None + else: + state = InputState.VALIDATE_INPUT + continue + + console.print(EXCEEDED_RETRY_ERROR) + return None + + +def select_repository( + console: Console, + repos: List[Tuple[str, str]], +) -> Optional[Tuple[str, str]]: + table = Table(title="Select the Example to Run", highlight=True) + table.add_column("Index", style="cyan", justify="center") + table.add_column( + "MAX Engine 🏎️ Examples 🔥", style="magenta", justify="left" + ) + for index, (name, _) in enumerate(repos): + table.add_row(str(index), name) + + console.print(table) + selected_repo = prompt_validation(console, RETRIES, repos) + if selected_repo is None: + return + + return selected_repo + + +def run_repository(repo_name: str) -> None: + repo_path = os.path.join(ROOT, repo_name) + run_script_path = (Path(repo_path) / "run.sh").resolve() + subprocess.run(["magic", "run", "bash", run_script_path], cwd=repo_path) + return + + +def main(): + repos = list_repositories() + console = Console() + if not repos: + console.print("No repositories found. Exiting!", style="red") + return + + exit_ = False + while not exit_: + console.print("\n") + selected = select_repository(console, repos) + if selected is None: + return + + _, selected_repo = selected + console.print(f"Running {selected_repo} ...") + run_repository(selected_repo) + another = Confirm.ask("Would you like to run another example?") + if not another: + exit_ = True + console.print( + "Thanks for trying the examples! Bye 👋", style="green" + ) + break + else: + console.print("Here is the example table again \n", style="green") + + +if __name__ == "__main__": + main() diff --git a/examples/custom_ops/.gitignore b/examples/custom_ops/.gitignore new file mode 100644 index 0000000000..aff686d201 --- /dev/null +++ b/examples/custom_ops/.gitignore @@ -0,0 +1 @@ +kernels.mojopkg diff --git a/examples/custom_ops/README.md b/examples/custom_ops/README.md new file mode 100644 index 0000000000..b3ff1d9910 --- /dev/null +++ b/examples/custom_ops/README.md @@ -0,0 +1,61 @@ +# Writing custom CPU or GPU graph operations using Mojo + +> [!NOTE] +> This is a preview of an interface for writing custom operations in Mojo, +> and may be subject to change before the next stable release. + +Graphs in MAX can be extended to use custom operations written in Mojo. The +following examples are shown here: + +- **addition**: Adding 1 to every element of an input tensor. +- **mandelbrot**: Calculating the Mandelbrot set. +- **vector_addition**: Performing vector addition using a manual GPU function. +- **top_k**: A top-K token sampler, a complex operation that shows a real-world + use case for a custom operation used today within a large language model + processing pipeline. +- **matrix_multiplication**: Various matrix multiplication algorithms, using a + memory layout abstraction. +- **fused_attention**: A fused attention operation, which leverages many of the + available MAX GPU programming features to show how to address an important + use case in AI models. + +Custom kernels have been written in Mojo to carry out these calculations. For +each example, a simple graph containing a single operation is constructed +in Python. This graph is compiled and dispatched onto a supported GPU if one is +available, or the CPU if not. Input tensors, if there are any, are moved from +the host to the device on which the graph is running. The graph then runs and +the results are copied back to the host for display. + +One thing to note is that this same Mojo code runs on CPU as well as GPU. In +the construction of the graph, it runs on a supported accelerator if one is +available or falls back to the CPU if not. No code changes for either path. +The `vector_addition` example shows how this works under the hood for common +MAX abstractions, where compile-time specialization lets MAX choose the optimal +code path for a given hardware architecture. + +The `kernels/` directory contains the custom kernel implementations, and the +graph construction occurs in the Python files in the base directory. These +examples are designed to stand on their own, so that they can be used as +templates for experimentation. + +A single Magic command runs each of the examples: + +```sh +magic run addition +magic run mandelbrot +magic run vector_addition +magic run top_k +magic run matrix_multiplication +magic run fused_attention +``` + +The execution has two phases: first a `kernels.mojopkg` is compiled from the +custom Mojo kernel, and then the graph is constructed and run in Python. The +inference session is pointed to the `kernels.mojopkg` in order to load the +custom operations. + +You can also run benchmarks to compare the performance of your GPU to your CPU: + +```sh +magic run benchmark +``` diff --git a/examples/custom_ops/addition.py b/examples/custom_ops/addition.py new file mode 100644 index 0000000000..aa1301f812 --- /dev/null +++ b/examples/custom_ops/addition.py @@ -0,0 +1,79 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + rows = 5 + columns = 10 + dtype = DType.float32 + + # Configure our simple one-operation graph. + graph = Graph( + "addition", + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + forward=lambda x: ops.custom( + name="add_one_custom", + values=[x], + out_types=[TensorType(dtype=x.dtype, shape=x.tensor.shape)], + )[0].tensor, + input_types=[ + TensorType(dtype, shape=[rows, columns]), + ], + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Compile the graph. + model = session.load(graph) + + # Fill an input matrix with random values. + x_values = np.random.uniform(size=(rows, columns)).astype(np.float32) + + # Create a driver tensor from this, and move it to the accelerator. + x = Tensor.from_numpy(x_values).to(device) + + # Perform the calculation on the target device. + result = model.execute(x)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Graph result:") + print(result.to_numpy()) + print() + + print("Expected result:") + print(x_values + 1) diff --git a/examples/custom_ops/benchmarks.mojo b/examples/custom_ops/benchmarks.mojo new file mode 100644 index 0000000000..67490d0c16 --- /dev/null +++ b/examples/custom_ops/benchmarks.mojo @@ -0,0 +1,264 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from kernels.top_k import TopK +from kernels.matrix_multiplication import MatrixMultiplication +from gpu.host import DeviceContext +from utils import IndexList +from max.driver import cpu +from max.tensor import ( + ManagedTensorSlice, + InputTensor, + OutputTensor, + StaticTensorSpec, +) +from random import rand +from memory import UnsafePointer +from runtime.asyncrt import DeviceContextPtr +from benchmark import ThroughputMeasure, BenchId, BenchMetric, Bench, Bencher +from bit import log2_floor +from sys import sizeof, has_nvidia_gpu_accelerator, has_amd_gpu_accelerator +from memory import AddressSpace + + +def top_k(): + alias batch_size = 30_000 + alias K = 32 + alias els = batch_size * K + alias rank = 2 + alias shape = IndexList[rank](batch_size, K) + alias val_dtype = DType.float32 + alias idx_dtype = DType.int32 + + # Slightly better performance compared to `create_unknown`. Using global + # address space doesn't improve perf for GPU. + alias val_spec = StaticTensorSpec[val_dtype, rank]( + shape=(batch_size, K), + strides=(K, 1), + alignment=sizeof[val_dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + alias idx_spec = StaticTensorSpec[idx_dtype, rank]( + shape=(batch_size, K), + strides=(K, 1), + alignment=sizeof[idx_dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + + var in_vals = InputTensor[static_spec=val_spec].rand() + var out_vals = OutputTensor[static_spec=val_spec].rand() + var out_idxs = OutputTensor[static_spec=idx_spec].rand() + + var cpu_ctx = DeviceContext(api="cpu") + + @parameter + @always_inline + fn bench_cpu(mut b: Bencher) raises: + @parameter + @always_inline + fn run_bench() raises: + TopK.execute[K=K, target="cpu"]( + out_vals, out_idxs, in_vals, cpu_ctx + ) + + b.iter[run_bench]() + + var flops = ThroughputMeasure(BenchMetric.flops, els * log2_floor(K)) + var elements = ThroughputMeasure(BenchMetric.elements, els) + + var b = Bench() + b.bench_function[bench_cpu](BenchId("top_k_custom", "cpu"), flops, elements) + + @parameter + if has_nvidia_gpu_accelerator() or has_amd_gpu_accelerator(): + var gpu_ctx = DeviceContext() + + var in_vals_dev_buff = gpu_ctx.enqueue_create_buffer[val_dtype](els) + var out_vals_dev_buff = gpu_ctx.enqueue_create_buffer[val_dtype](els) + var out_idxs_dev_buff = gpu_ctx.enqueue_create_buffer[idx_dtype](els) + + gpu_ctx.enqueue_copy(in_vals_dev_buff, in_vals.unsafe_ptr()) + + var out_vals_dev = OutputTensor[static_spec=val_spec]( + out_vals_dev_buff.unsafe_ptr(), shape + ) + var out_idxs_dev = OutputTensor[static_spec=idx_spec]( + out_idxs_dev_buff.unsafe_ptr(), shape + ) + var in_vals_dev = InputTensor[static_spec=val_spec]( + in_vals_dev_buff.unsafe_ptr(), shape + ) + + @parameter + @always_inline + fn bench_gpu(mut b: Bencher) raises: + @parameter + @always_inline + fn kernel_launch(gpu_ctx: DeviceContext) raises: + TopK.execute[K=K, target="gpu"]( + out_vals_dev, out_idxs_dev, in_vals_dev, gpu_ctx + ) + + b.iter_custom[kernel_launch](gpu_ctx) + + b.bench_function[bench_gpu]( + BenchId("top_k_custom", "gpu"), flops, elements + ) + _ = in_vals_dev_buff + _ = out_vals_dev_buff + _ = out_idxs_dev_buff + + b.config.verbose_metric_names = False + print(b) + + _ = in_vals + _ = out_vals + _ = out_idxs + + +def matmul(): + alias M = 1028 + alias K = 1028 + alias N = 1028 + alias FLOPS = M * N * (2 * K - 1) + + alias rank = 2 + alias a_shape = IndexList[rank](M, K) + alias b_shape = IndexList[rank](K, N) + alias c_shape = IndexList[rank](M, N) + + alias a_els = a_shape.flattened_length() + alias b_els = b_shape.flattened_length() + alias c_els = c_shape.flattened_length() + + alias dtype = DType.float32 + + alias a_spec = StaticTensorSpec[dtype, rank]( + shape=(M, K), + strides=(K, 1), + alignment=sizeof[dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + alias b_spec = StaticTensorSpec[dtype, rank]( + shape=(K, N), + strides=(N, 1), + alignment=sizeof[dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + alias c_spec = StaticTensorSpec[dtype, rank]( + shape=(M, N), + strides=(N, 1), + alignment=sizeof[dtype](), + address_space=AddressSpace.GENERIC, + exclusive=True, + in_lambda=None, + out_lambda=None, + ) + + var a = InputTensor[static_spec=a_spec].rand() + var b = InputTensor[static_spec=b_spec].rand() + var c = OutputTensor[static_spec=c_spec].rand() + + var cpu_ctx = DeviceContext(api="cpu") + var bench = Bench() + var flops = ThroughputMeasure(BenchMetric.flops, FLOPS) + var elements = ThroughputMeasure(BenchMetric.elements, M * N) + + @parameter + @always_inline + fn bench_cpu(mut bencher: Bencher) raises: + @parameter + @always_inline + fn run_bench() raises: + MatrixMultiplication["naive"].execute[target="cpu"]( + c, a, b, cpu_ctx + ) + + bencher.iter[run_bench]() + + bench.bench_function[bench_cpu](BenchId("cpu", "naive"), flops, elements) + + @parameter + if has_nvidia_gpu_accelerator() or has_amd_gpu_accelerator(): + var gpu_ctx = DeviceContext() + var a_dev_buf = gpu_ctx.enqueue_create_buffer[dtype](a_els) + var b_dev_buf = gpu_ctx.enqueue_create_buffer[dtype](b_els) + var c_dev_buf = gpu_ctx.enqueue_create_buffer[dtype](c_els) + + gpu_ctx.enqueue_copy(a_dev_buf, a.unsafe_ptr()) + gpu_ctx.enqueue_copy(b_dev_buf, b.unsafe_ptr()) + + var c_dev = InputTensor[static_spec=c_spec]( + c_dev_buf.unsafe_ptr(), c_shape + ) + var a_dev = OutputTensor[static_spec=a_spec]( + a_dev_buf.unsafe_ptr(), a_shape + ) + var b_dev = OutputTensor[static_spec=b_spec]( + b_dev_buf.unsafe_ptr(), b_shape + ) + + @parameter + def bench_matmul_kernel[impl: StringLiteral](): + @parameter + @always_inline + fn bench_gpu(mut bench: Bencher) raises: + @parameter + @always_inline + fn kernel_launch(gpu_ctx: DeviceContext) raises: + MatrixMultiplication[impl].execute[target="gpu"]( + c_dev, a_dev, b_dev, gpu_ctx + ) + + bench.iter_custom[kernel_launch](gpu_ctx) + + bench.bench_function[bench_gpu]( + BenchId("gpu", impl), flops, elements + ) + + bench_matmul_kernel["naive"]() + bench_matmul_kernel["coalescing"]() + bench_matmul_kernel["tiled"]() + bench_matmul_kernel["tiled_register"]() + bench_matmul_kernel["block_tiled"]() + bench_matmul_kernel["block_tiled_vectorized"]() + # TODO add origin to `ManagedTensorSlice` to avoid this + _ = a_dev_buf + _ = b_dev_buf + _ = c_dev_buf + + bench.config.verbose_metric_names = False + print(bench) + + # TODO add origin to `ManagedTensorSlice` to avoid this + _ = a + _ = b + _ = c + + +# TODO: arg parsing to select benchmarks +def main(): + top_k() + matmul() diff --git a/examples/custom_ops/fused_attention.py b/examples/custom_ops/fused_attention.py new file mode 100644 index 0000000000..03d1367148 --- /dev/null +++ b/examples/custom_ops/fused_attention.py @@ -0,0 +1,72 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine.api import InferenceSession +from max.graph import Graph, TensorType, ops + + +def main(): + # This is necessary only for Modular internal CI. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + dtype = DType.float32 + N = 8 + D = 8 + BD = 4 + BN = 4 + with Graph( + "fused_attention", + input_types=[ + TensorType(dtype, shape=[N, D]), + TensorType(dtype, shape=[N, D]), + TensorType(dtype, shape=[N, D]), + ], + ) as graph: + q, k, v, *_ = graph.inputs + results = ops.custom( + name="fused_attention_custom", + parameters={"N": N, "D": D, "BD": BD, "BN": BN}, + values=[q, k, v], + out_types=[TensorType(dtype, shape=[N, D])], + ) + graph.output(*results) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession(devices=[device], custom_extensions=path) + + # Compile the graph. + model = session.load(graph) + + np.random.seed(123) + Q = Tensor.from_numpy(np.random.randn(N, D).astype("f")).to(device) + K = Tensor.from_numpy(np.random.randn(N, D).astype("f")).to(device) + V = Tensor.from_numpy(np.random.randn(N, D).astype("f")).to(device) + + output = model.execute(Q, K, V) + print(output) + + +if __name__ == "__main__": + main() diff --git a/examples/custom_ops/histogram.py b/examples/custom_ops/histogram.py new file mode 100644 index 0000000000..4ebcbe2bfe --- /dev/null +++ b/examples/custom_ops/histogram.py @@ -0,0 +1,77 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + n = 2**20 + + # Configure our simple one-operation graph. + graph = Graph( + "histogram", + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + forward=lambda x: ops.custom( + name="histogram", + values=[x], + out_types=[TensorType(dtype=DType.int64, shape=[256])], + )[0].tensor, + input_types=[ + TensorType(DType.uint8, shape=[n]), + ], + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession(devices=[device], custom_extensions=path) + + # Compile the graph. + model = session.load(graph) + + # Fill an input with random values. + x_values = np.random.randint(0, 256, size=n, dtype=np.uint8) + + # Create a driver tensor from this, and move it to the accelerator. + x = Tensor.from_numpy(x_values).to(device) + + # Perform the calculation on the target device. + model_result = model.execute(x)[0] + + # Copy values back to the CPU to be read. + assert isinstance(model_result, Tensor) + + print("Graph result:") + result = model_result.to_numpy() + print(result) + print() + + print("Expected result:") + expected = np.histogram(x_values, bins=256, range=(0, 256))[0] + print(expected) + + assert all(result == expected), "Result does not match expected" diff --git a/examples/custom_ops/kernels/__init__.mojo b/examples/custom_ops/kernels/__init__.mojo new file mode 100644 index 0000000000..23a1a193df --- /dev/null +++ b/examples/custom_ops/kernels/__init__.mojo @@ -0,0 +1,17 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .add_custom import * +from .mandelbrot import * +from .top_k import * +from .vector_addition import * diff --git a/examples/custom_ops/kernels/add_custom.mojo b/examples/custom_ops/kernels/add_custom.mojo new file mode 100644 index 0000000000..411ea7061e --- /dev/null +++ b/examples/custom_ops/kernels/add_custom.mojo @@ -0,0 +1,82 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import compiler +from max.tensor import ManagedTensorSlice, foreach +from runtime.asyncrt import DeviceContextPtr + +from utils.index import IndexList + + +@compiler.register("add_constant_custom", num_dps_outputs=1) +struct AddConstantCustom[value: Int]: + @staticmethod + fn execute[ + # e.g. "CUDA" or "CPU" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice, + # starting here are the list of inputs + x: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ): + @parameter + @always_inline + fn add_constant[ + width: Int + ](idx: IndexList[x.rank]) -> SIMD[x.type, width]: + return x.load[width](idx) + value + + foreach[add_constant, target=target](out, ctx) + + # You only need to implement this if you do not manually annotate + # output shapes in the graph. + @staticmethod + fn shape( + x: ManagedTensorSlice, + ) raises -> IndexList[x.rank]: + raise "NotImplemented" + + +@compiler.register("add_one_custom", num_dps_outputs=1) +struct AddOneCustom: + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice, + # starting here are the list of inputs + x: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ): + @parameter + @always_inline + fn elementwise_add_one[ + width: Int + ](idx: IndexList[x.rank]) -> SIMD[x.type, width]: + return x.load[width](idx) + 1 + + foreach[elementwise_add_one, target=target](out, ctx) + + # You only need to implement this if you do not manually annotate + # output shapes in the graph. + @staticmethod + fn shape( + x: ManagedTensorSlice, + ) raises -> IndexList[x.rank]: + raise "NotImplemented" diff --git a/examples/custom_ops/kernels/fused_attention.mojo b/examples/custom_ops/kernels/fused_attention.mojo new file mode 100644 index 0000000000..28a53120b4 --- /dev/null +++ b/examples/custom_ops/kernels/fused_attention.mojo @@ -0,0 +1,360 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +""" +The code below computes the attention score for a tile of size BN x BD. +It follows the exact arithmetic as described in the FlashAttention-2 paper +(https://arxiv.org/pdf/2307.08691). The variable names in this program +reflect the variable names in the algorithms from the paper. + +Here, the following tensors are Q for the query, +K for the key, V for the value, and O for the output. + + Q K V + +----D----+ +----D----+ +--+--BD--+---+ + | | |.........| | |......| | + | | |.........| | |......| | + +---------+ |.........| | |......| | + |.........| |.........| | |......| | + BN........| N.........| N |......| | + |.........| |.........| | |......| | + +---------+ |.........| | |......| | + | | |.........| | |......| | + | | |.........| | |......| | + | | |.........| | |......| | + +---------+ +---------+ +--+------+---+ + +The main trick is in the softmax computation. +As the paper says, S and P are intermediate values. + +Let S = Q * K^T ∈ R^{N, D} + P = Softmax(S) ∈ R^{N, D} +The attention score is O = P * V ∈ R^{N, D}. + +One way to think about this is to consider what happens if we +split the dimensions N in K, and Q into two tiles: K_1 and K_2, V_1 and V_2. +Then we can incrementally compute the output as follows: + S_1 = Q * K_1, S_2 = Q * K_2 + O_i = O_{i-1} * renormalization_factor + softmax(S_i) * V_i + +This allows for the incremental computation of softmax(S_i) * V_i, +leading to the final output. +""" + + +from algorithm import parallelize_over_rows +from compiler import register +from utils.index import IndexList +from layout import Layout, LayoutTensor, RuntimeLayout, RuntimeTuple +from layout.tensor_core import TensorCore +from layout.math import exp, sum, max +from gpu.host import DeviceContext +from gpu.id import block_idx, thread_idx +from gpu.sync import barrier +from gpu.memory import AddressSpace +from utils import Index + +from tensor import ManagedTensorSlice + + +@register("fused_attention_custom", num_dps_outputs=1) +struct FusedAttention: + """Registers the `fused_attention_custom` op, allowing python to use it from the `max` + package. + """ + + @staticmethod + fn execute[ + dtype: DType, + rank: Int, + //, # Forces the previous two params to be inferred from the args + N: Int, # Input length + D: Int, # Head dimension + BN: Int, # Dimension of blocks to split Q into + BD: Int, # Dimension of blocks to split K, V into + target: StringLiteral, # "cpu" or "gpu" + ]( + output: ManagedTensorSlice[type=dtype, rank=rank], + key: ManagedTensorSlice[type=dtype, rank=rank], + query: ManagedTensorSlice[type=dtype, rank=rank], + value: ManagedTensorSlice[type=dtype, rank=rank], + ctx: DeviceContextPtr, + ) raises: + constrained[rank == 2, "rank must be 2"]() + + # Key tensor + K = key.to_layout_tensor() + # Query tensor + Q = query.to_layout_tensor() + # Value tensor + V = value.to_layout_tensor() + # Attention output tensor + O = output.to_layout_tensor() + + @parameter + if target == "cpu": + print("Running on CPU") + fused_attention_cpu[BN, BD](K, Q, V, O) + else: + dev_ctx = ctx.get_device_context() + print("Running on GPU") + fused_attention_gpu[BN, BD](dev_ctx, K, Q, V, O) + + +@always_inline +fn matmul_b_transpose( + lhs: LayoutTensor, + rhs: LayoutTensor, + out res: LayoutTensor[ + lhs.dtype, Layout.row_major(lhs.shape[0](), rhs.shape[0]()) + ], +): + res = __type_of(res).stack_allocation() + + @parameter + for m in range(lhs.shape[0]()): + + @parameter + for n in range(rhs.shape[0]()): + res[m, n] = 0.0 + + @parameter + for k in range(lhs.shape[1]()): + res[m, n] += rebind[res.element_type]( + lhs[m, k].cast[res.dtype]() + ) * rebind[res.element_type](rhs[n, k].cast[res.dtype]()) + + +""" +The bulk of the code below implements what the papers calls +an "online softmax", which is local to each block. +The algorithm is described as: + +$$$ +m_1 = rowmax(S_1) +l_1 = rowsum(e^(S_1-m_1)) +P_1 = diag(l_1)^-1 * e^(S_1-m_1) +O_1 = P_1*V_1 = diag(l_1)^-1 * e^(S_1-m_1) * V_1 +m_2 = max(m_1, rowmax(S_2)) = m +l_2 = e^(m_1-m_2) * l_1 _ rowsum(e^(S_2-m_2)) + = rowsum(e^(S_1-m)) + rowsum(e^(S_2-m)) = ls +P_2 = diag(l_2)^-1 * e^(S_2-m_2) +O_2 = diag(l_1/l_2)^-1 * O_1 + (P_2 * V_2) + = diag(l_2)^-1 * e^(S_2-m) * V +$$$ +""" + + +@always_inline +fn fused_attention_cpu[ + BN: Int, BD: Int +](Q: LayoutTensor, K: LayoutTensor, V: LayoutTensor, mut O: LayoutTensor): + alias N = K.shape[0]() + alias D = K.shape[1]() + + @parameter + for tile_n in range(N // BN): + Q_tile = Q.tile[BN, D](tile_n, 0) + + @parameter + for tile_d in range(D // BD): + m_1 = ( + LayoutTensor[Q_tile.dtype, Layout(BN, 1)] + .stack_allocation() + .fill(Scalar[Q_tile.dtype].MIN) + ) + + l_1 = ( + LayoutTensor[Q_tile.dtype, Layout(BN, 1)] + .stack_allocation() + .fill(0) + ) + + O_i = ( + LayoutTensor[Q_tile.dtype, Layout.row_major(BN, BD)] + .stack_allocation() + .fill(0) + ) + + @parameter + for tile_n_idx in range(N // BN): + K_tile = K.tile[BN, D](tile_n_idx, 0) + V_tile = V.tile[BN, BD](tile_n_idx, tile_d) + + S = matmul_b_transpose(Q_tile, K_tile) + m_2 = max(m_1, rebind[__type_of(m_1)](max[axis=1](S))) + l_2 = exp(m_1 - m_2) * l_1 + sum[axis=1](exp(S - m_2)) + + P = exp(S - m_2) / l_2 + O_i = O_i * (l_1 / l_2) * exp(m_1 - m_2) + matmul["cpu"]( + P, V_tile + ) + m_1 = m_2 + l_1 = rebind[__type_of(l_1)](l_2) + + O.tile[BN, BD](tile_n, tile_d).copy_from(O_i) + + +@always_inline +fn matmul[ + target: StringLiteral, + transpose_b: Bool = False, +]( + lhs: LayoutTensor, + rhs: LayoutTensor, + out res: LayoutTensor[ + lhs.dtype, + Layout.row_major(lhs.shape[0](), rhs.shape[0]()), + address_space = lhs.address_space, + element_layout = lhs.element_layout, + layout_bitwidth = lhs.layout_bitwidth, + ], +): + res = __type_of(res).stack_allocation() + + @parameter + if target == "cpu": + + @parameter + for m in range(lhs.shape[0]()): + + @parameter + for n in range(rhs.shape[1]()): + res[m, n] = 0.0 + + @parameter + for k in range(lhs.shape[1]()): + res[m, n] += rebind[res.element_type]( + lhs[m, k].cast[res.dtype]() + ) * rebind[res.element_type](rhs[k, n].cast[res.dtype]()) + else: + alias M = res.shape[0]() + alias N = res.shape[1]() + alias K = lhs.shape[1]() + + out_sram = LayoutTensor[ + res.dtype, + Layout.row_major(M, N), + address_space = AddressSpace.SHARED, + ].stack_allocation() + + alias BK = 8 + + constrained[K % 8 == 0, "K needs to be a multiple of 8"]() + + mma_b_t = TensorCore[ + lhs.dtype, res.dtype, Index(M, N, BK), transpose_b + ]() + + c_reg = mma_b_t.c_reg_tile_type.stack_allocation().fill(0) + + @parameter + for k_i in range(K // BK): + a_reg = mma_b_t.load_a(lhs.tile[M, BK](0, k_i)) + + b_reg = mma_b_t.load_b(rhs.tile[BK, N](k_i, 0)) + + @parameter + if transpose_b: + b_reg = rebind[__type_of(b_reg)]( + mma_b_t.load_b(rhs.tile[N, BK](0, k_i)) + ) + + d_reg = mma_b_t.mma_op(a_reg, b_reg, c_reg) + c_reg.copy_from(d_reg) + mma_b_t.store_d(out_sram, c_reg) + + barrier() + res.copy_from(out_sram) + + +fn fused_attention_kenel[ + q_dtype: DType, + q_layout: Layout, + k_dtype: DType, + k_layout: Layout, + v_dtype: DType, + v_layout: Layout, + o_dtype: DType, + o_layout: Layout, + BN: Int, + BD: Int, +]( + Q: LayoutTensor[q_dtype, q_layout], + K: LayoutTensor[k_dtype, k_layout], + V: LayoutTensor[v_dtype, v_layout], + O: LayoutTensor[o_dtype, o_layout], +): + alias N = Q.shape[0]() + alias D = Q.shape[1]() + + Q_tile = Q.tile[BN, D](block_idx.y, 0) + + m_1 = ( + LayoutTensor[q_dtype, Layout(BN, 1)] + .stack_allocation() + .fill(Scalar[q_dtype].MIN) + ) + l_1 = LayoutTensor[q_dtype, Layout(BN, 1)].stack_allocation().fill(0) + O_i = ( + LayoutTensor[q_dtype, Layout.row_major(BN, BD)] + .stack_allocation() + .fill(0) + ) + + alias BN_1 = 8 + + @parameter + for tile_n_idx in range(N // BN_1): + K_tile = K.tile[BN_1, D](tile_n_idx, 0) + V_tile = V.tile[BN_1, BD](tile_n_idx, block_idx.x) + S = matmul["gpu", transpose_b=True](Q_tile, K_tile) + m_2 = max(m_1, rebind[__type_of(m_1)](max[axis=1](S))) + l_2 = exp(m_1 - m_2) * l_1 + sum[axis=1](exp(S - m_2)) + P = exp(S - m_2) / l_2 + O_i = O_i * (l_1 / l_2) * exp(m_1 - m_2) + matmul["gpu"](P, V_tile) + m_1 = m_2 + l_1 = rebind[__type_of(l_1)](l_2) + O.tile[BN, BD](block_idx.y, block_idx.x).copy_from(O_i) + + +def fused_attention_gpu[ + BN: Int, + BD: Int, +]( + ctx: DeviceContext, + Q: LayoutTensor, + K: LayoutTensor, + V: LayoutTensor, + mut O: LayoutTensor, +): + alias kernel_func = fused_attention_kenel[ + Q.dtype, + Q.layout, + K.dtype, + K.layout, + V.dtype, + V.layout, + O.dtype, + O.layout, + BN, + BD, + ] + ctx.enqueue_function[kernel_func]( + Q, + K, + V, + O, + grid_dim=(Q.shape[1]() // BD, Q.shape[0]() // BN), + block_dim=(32), + ) diff --git a/examples/custom_ops/kernels/histogram.mojo b/examples/custom_ops/kernels/histogram.mojo new file mode 100644 index 0000000000..01e2237ed1 --- /dev/null +++ b/examples/custom_ops/kernels/histogram.mojo @@ -0,0 +1,83 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import ceildiv + +from gpu import block_dim, block_idx, thread_idx, global_idx +from gpu.host import DeviceContext +from runtime.asyncrt import DeviceContextPtr +from tensor import ManagedTensorSlice +from algorithm import vectorize, sync_parallelize +from algorithm.functional import _get_num_workers +from memory import memset +from sys import simdwidthof, sizeof +from os import Atomic + +from utils.index import IndexList +from gpu.host.info import Info, is_cpu, is_gpu + +from memory import UnsafePointer + +alias bin_width = Int(UInt8.MAX) + + +fn _histogram_cpu(out: ManagedTensorSlice, input: ManagedTensorSlice): + for i in range(input.dim_size(0)): + out[Int(input[i])] += 1 + + +fn _histogram_gpu( + output: ManagedTensorSlice, + input: ManagedTensorSlice, + ctx_ptr: DeviceContextPtr, +) raises: + alias block_dim = 1024 + + fn kernel( + output: UnsafePointer[Int64], input: UnsafePointer[UInt8], n: Int + ): + var tid = global_idx.x + + if tid >= n: + return + + _ = Atomic._fetch_add(output + Int(input[tid]), 1) + + var n = input.dim_size(0) + + var grid_dim = ceildiv(n, block_dim) + + var ctx = ctx_ptr.get_device_context() + + ctx.enqueue_function[kernel]( + output.unsafe_ptr(), + input.unsafe_ptr(), + n, + block_dim=block_dim, + grid_dim=grid_dim, + ) + + +@compiler.register("histogram", num_dps_outputs=1) +struct Histogram: + @staticmethod + fn execute[ + target: StringLiteral + ]( + out: ManagedTensorSlice[type = DType.int64, rank=1], + input: ManagedTensorSlice[type = DType.uint8, rank=1], + ctx: DeviceContextPtr, + ) raises: + _histogram_cpu(out, input) if is_cpu[target]() else _histogram_gpu( + out, input, ctx + ) diff --git a/examples/custom_ops/kernels/mandelbrot.mojo b/examples/custom_ops/kernels/mandelbrot.mojo new file mode 100644 index 0000000000..bf190e21c8 --- /dev/null +++ b/examples/custom_ops/kernels/mandelbrot.mojo @@ -0,0 +1,92 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import iota + +import compiler +from complex import ComplexSIMD +from max.tensor import ManagedTensorSlice, foreach +from runtime.asyncrt import DeviceContextPtr + +from utils.index import IndexList + + +@always_inline +fn mandelbrot_inner_simd[ + float_type: DType, int_type: DType, simd_width: Int +]( + c: ComplexSIMD[float_type, simd_width], max_iterations: SIMD[int_type, 1] +) -> SIMD[int_type, simd_width]: + """A vectorized implementation of the inner Mandelbrot computation.""" + var z = ComplexSIMD[float_type, simd_width](0, 0) + var iters = SIMD[int_type, simd_width](0) + + var in_set_mask: SIMD[DType.bool, simd_width] = True + for _ in range(max_iterations): + if not any(in_set_mask): + break + in_set_mask = z.squared_norm() <= 4 + iters = in_set_mask.select(iters + 1, iters) + z = z.squared_add(c) + + return iters + + +alias float_dtype = DType.float32 + + +@compiler.register("mandelbrot", num_dps_outputs=1) +struct Mandelbrot: + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice, + # starting here are the list of inputs + min_x: Float32, + min_y: Float32, + scale_x: Float32, + scale_y: Float32, + max_iterations: Int32, + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ): + @parameter + @always_inline + fn elementwise_mandelbrot[ + width: Int + ](idx: IndexList[out.rank]) -> SIMD[out.type, width]: + var row = idx[0] + var col = idx[1] + var cx = min_x.cast[float_dtype]() + ( + col + iota[float_dtype, width]() + ) * scale_x.cast[float_dtype]() + var cy = min_y.cast[float_dtype]() + row * SIMD[float_dtype, width]( + scale_y.cast[float_dtype]() + ) + var c = ComplexSIMD[float_dtype, width](cx, cy) + return mandelbrot_inner_simd[cx.type, out.type, width]( + c, max_iterations.cast[out.type]() + ) + + foreach[elementwise_mandelbrot, target=target](out, ctx) + + # You only need to implement this if you do not manually annotate + # output shapes in the graph. + @staticmethod + fn shape( + x: ManagedTensorSlice, + ) raises -> IndexList[x.rank]: + raise "NotImplemented" diff --git a/examples/custom_ops/kernels/matrix_multiplication.mojo b/examples/custom_ops/kernels/matrix_multiplication.mojo new file mode 100644 index 0000000000..afc810b25a --- /dev/null +++ b/examples/custom_ops/kernels/matrix_multiplication.mojo @@ -0,0 +1,1007 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gpu import WARP_SIZE, block_dim, block_idx, thread_idx +from gpu.host import DeviceBuffer, DeviceContext +from gpu.memory import async_copy_wait_all +from layout.layout_tensor import ( + Layout, + LayoutTensor, + copy_dram_to_sram, + copy_dram_to_sram_async, +) +from layout.math import outer_product_acc +from layout.tensor_builder import LayoutTensorBuild as tb +from layout.tensor_core import TensorCore +from math import ceildiv +from memory import UnsafePointer +from runtime.asyncrt import DeviceContextPtr +from sys.info import simdwidthof +from tensor import ManagedTensorSlice, foreach +from utils.index import Index + +# ===-----------------------------------------------------------------------===# +# Naive matrix multiplication (CPU) +# ===-----------------------------------------------------------------------===# + + +fn naive_matrix_multiplication_cpu( + out: ManagedTensorSlice, + a: ManagedTensorSlice[type = out.type, rank = out.rank], + b: ManagedTensorSlice[type = out.type, rank = out.rank], +): + """A naive matrix multiplication used as a fallback on CPU hardware.""" + var M = a.shape()[0] + var N = b.shape()[1] + var K = b.shape()[0] + + for row in range(M): + for col in range(N): + for k in range(K): + out[row, col] = out[row, col] + a[row, k] * b[k, col] + + +# ===-----------------------------------------------------------------------===# +# Naive matrix multiplication (GPU) +# ===-----------------------------------------------------------------------===# + + +fn naive_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a simple nested loop structure to compute the matrix + multiplication. Each thread computes a single element of the output matrix + C by accumulating the dot product of the corresponding row of A and column + of B. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + # Calculate the column and row indices for each thread. + var col = thread_idx.y + var row = thread_idx.x + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C that this thread is + # responsible for computing. + var dst = c.tile[BM, BN](bidy, bidx) + + # Initialize a register to accumulate the result for this thread. + var dst_reg: c.element_type = 0 + + # Iterate over the K dimension to compute the dot product. + for k in range(b.dim(0)): + # Get the corresponding tiles from matrices A and B. + var a_tile = a.tile[BM, 1](bidy, k) + var b_tile = b.tile[1, BN](k, bidx) + + # Multiply the elements and accumulate the result. + dst_reg += a_tile[row, 0] * b_tile[0, col] + + # Write the final accumulated result to the output matrix. + dst[row, col] += dst_reg + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with tiling +# ===-----------------------------------------------------------------------===# + + +fn coalescing_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + GEMM kernel that performs matrix multiplication C = A * B with + memory coalescing optimizations. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel optimizes memory access patterns by ensuring that + threads within a warp access contiguous memory locations. It + tiles the input matrices A and B and computes the matrix + multiplication using register tiling. + + Each thread computes a single element of the output matrix C by + accumulating the partial results in a register. The final result + is then stored back to the output matrix. + """ + + var col = thread_idx.x + var row = thread_idx.y + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C + var dst = c.tile[BM, BN](bidy, bidx) + + # Initialize the register to accumulate the result + var dst_reg: c.element_type = 0 + + # Iterate over the K dimension + for k in range(b.dim(0)): + # Get the tiles of input matrices A and B + var a_tile = a.tile[BM, 1](bidy, k) + var b_tile = b.tile[1, BN](k, bidx) + + # Compute the partial result and accumulate it in the register + dst_reg += a_tile[row, 0] * b_tile[0, col] + + # Store the final result back to the output matrix + dst[row, col] += dst_reg + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with shared memory tiling +# ===-----------------------------------------------------------------------===# + + +fn tiled_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B using + shared memory to improve performance. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + NUM_THREADS: The total number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a tiling strategy to compute the matrix multiplication. + Each thread block computes a BM x BN tile of the output matrix C. The + input matrices A and B are loaded into shared memory in tiles of size + BM x BK and BK x BN, respectively. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the + number of rows in B. + """ + # Calculate the column and row indices for each thread + var col = thread_idx.x % BN + var row = thread_idx.x // BN + + # Get the tile of the output matrix C that this thread block is responsible for + var dst = c.tile[BM, BN](block_idx.y, block_idx.x) + + # Allocate shared memory for tiles of input matrices A and B + var a_smem = tb[dtype]().row_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + # Initialize the register to accumulate the result + var dst_reg: c.element_type = 0 + + # Iterate over tiles of input matrices A and B + for block in range(b.dim(0) // BK): + # Define the layout for loading tiles of A and B into shared memory + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + + # Get the tiles of A and B for the current iteration + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + + # Asynchronously copy tiles of A and B from global memory to shared memory + copy_dram_to_sram_async[thread_layout=load_a_layout](a_smem, a_tile) + copy_dram_to_sram_async[thread_layout=load_b_layout](b_smem, b_tile) + + # Wait for all asynchronous copies to complete + async_copy_wait_all() + + # Synchronize threads to ensure shared memory is populated + barrier() + + # Perform matrix multiplication on the tiles in shared memory + @parameter + for k in range(BK): + dst_reg += a_smem[row, k] * b_smem[k, col] + + # Synchronize threads before loading the next tiles + barrier() + + # Write the result to the output matrix + dst[row, col] += dst_reg + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with shared memory tiling and register tiling +# ===-----------------------------------------------------------------------===# + + +fn tiled_register_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + TM: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B using + shared memory. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + TM: The tile size in the M dimension. + NUM_THREADS: The number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a tiled approach to compute the matrix multiplication. It + loads tiles of matrices A and B into shared memory, and then each thread + computes a partial result using the tiles in shared memory. The partial + results are accumulated in registers and finally stored back to the output + matrix C. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + # Calculate the column and row indices for each thread. + var col = thread_idx.x % BN + var row = thread_idx.x // BN + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C that this thread is + # responsible for computing. + var dst = c.tile[BM, BN](bidy, bidx).tile[TM, 1](row, col) + + # Allocate shared memory for tiles of A and B. + var a_smem = tb[dtype]().row_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + # Allocate a register tile to store the partial results. + var dst_reg = tb[dtype]().layout[TM]().local().alloc() + dst_reg.copy_from(dst) + + # Iterate over the tiles of A and B in the K dimension. + for block in range(b.dim(0) // BK): + # Define the layout for loading tiles of A and B into shared + # memory. + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + + # Get the tiles of A and B for the current block. + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + + # Load the tiles of A and B into shared memory asynchronously. + copy_dram_to_sram_async[thread_layout=load_a_layout](a_smem, a_tile) + copy_dram_to_sram_async[thread_layout=load_b_layout](b_smem, b_tile) + + # Wait for all asynchronous copies to complete. + async_copy_wait_all() + barrier() + + # Iterate over the elements in the K dimension within the tiles. + @parameter + for k in range(BK): + # Get the corresponding tiles from shared memory. + var a_tile = a_smem.tile[TM, 1](row, k) + var b_tile = b_smem.tile[1, BN](k, 0) + var b_val = b_tile[0, col] + + # Multiply the elements and accumulate the partial results. + @parameter + for t in range(TM): + dst_reg[t] += a_tile[t, 0] * b_val + + # Synchronize all threads before loading the next tiles. + barrier() + + # Write the final accumulated results to the output matrix. + dst.copy_from(dst_reg) + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with block tiling +# ===-----------------------------------------------------------------------===# + + +fn block_tiled_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + TM: Int, + TN: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + TM: The tile size in the M dimension. + TN: The tile size in the N dimension. + NUM_THREADS: The total number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a 2D block tiling strategy to compute the matrix + multiplication. Each thread block computes a BM x BN tile of the output + matrix C. Within each thread block, threads are further divided into + TM x TN tiles to enable thread-level parallelism. + + The kernel loads tiles of A and B into shared memory to reduce global + memory accesses. It then performs the matrix multiplication using + register-level tiling and accumulates the results in registers. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + var partition_col = thread_idx.x % (BN // TN) + var partition_row = thread_idx.x // (BN // TN) + var bidx = block_idx.x + var bidy = block_idx.y + + var dst = c.tile[BM, BN](bidy, bidx).tile[TM, TN]( + partition_row, partition_col + ) + + var a_smem = tb[dtype]().row_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + var dst_reg = tb[dtype]().row_major[TM, TN]().local().alloc() + dst_reg.copy_from(dst) + var a_reg = tb[dtype]().layout[TM]().local().alloc() + var b_reg = tb[dtype]().layout[TN]().local().alloc() + + var ntiles = b.dim(0) // BK + + for block in range(ntiles): + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + copy_dram_to_sram_async[thread_layout=load_a_layout](a_smem, a_tile) + copy_dram_to_sram_async[thread_layout=load_b_layout](b_smem, b_tile) + + async_copy_wait_all() + barrier() + + @parameter + for k in range(BK): + var a_tile = a_smem.tile[TM, 1](partition_row, k) + var b_tile = b_smem.tile[1, TN](k, partition_col) + a_reg.copy_from(a_tile) + b_reg.copy_from(b_tile) + outer_product_acc(dst_reg, a_reg, b_reg) + barrier() + + dst.copy_from(dst_reg) + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication with vectorized memory access +# ===-----------------------------------------------------------------------===# + + +fn block_tiled_vectorized_matrix_multiplication[ + dtype: DType, + a_layout: Layout, + b_layout: Layout, + c_layout: Layout, + BM: Int, + BN: Int, + BK: Int, + TM: Int, + TN: Int, + NUM_THREADS: Int, +]( + a: LayoutTensor[dtype, a_layout], + b: LayoutTensor[dtype, b_layout], + c: LayoutTensor[dtype, c_layout], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B with + vectorized memory access. + + Parameters: + dtype: The data type of the input and output tensors. + a_layout: The layout of the input tensor A. + b_layout: The layout of the input tensor B. + c_layout: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + TM: The tile size in the M dimension. + TN: The tile size in the N dimension. + NUM_THREADS: The total number of threads per block. + + Args: + a: The input tensor A. + b: The input tensor B. + c: The output tensor C. + + This kernel uses a 2D block tiling strategy to compute the matrix + multiplication. Each thread block computes a BM x BN tile of the output + matrix C. Within each thread block, threads are further divided into TM x + TN tiles to enable thread-level parallelism. + + The kernel loads tiles of A and B into shared memory using vectorized + memory access to improve memory bandwidth utilization. It then performs the + matrix multiplication using register-level tiling and accumulates the + results in registers. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + + alias simd_width = simdwidthof[dtype]() + var partition_col = thread_idx.x % (BN // TN) + var partition_row = thread_idx.x // (BN // TN) + var bidx = block_idx.x + var bidy = block_idx.y + + # Get the tile of the output matrix C that this thread is responsible + # for computing. + var dst = c.tile[BM, BN](bidy, bidx).tile[TM, TN]( + partition_row, partition_col + ) + var dst_vec = dst.vectorize[1, simd_width]() + + # Allocate shared memory for tiles of A and B. + # Use column-major layout for A to get the transpose. + var a_smem = tb[dtype]().col_major[BM, BK]().shared().alloc() + var b_smem = tb[dtype]().row_major[BK, BN]().shared().alloc() + + # Allocate register tiles to store the partial results and operands. + var dst_reg = tb[dtype]().row_major[TM, TN]().local().alloc() + var dst_reg_vec = dst_reg.vectorize[1, simd_width]() + dst_reg_vec.copy_from(dst_vec) + + var a_reg = tb[dtype]().layout[TM]().local().alloc() + var b_reg = tb[dtype]().layout[TN]().local().alloc() + + var ntiles = b.dim(0) // BK + + # Iterate over the tiles of A and B in the K dimension. + for block in range(ntiles): + alias load_a_layout = Layout.row_major(NUM_THREADS // BK, BK) + alias load_b_layout = Layout.row_major(BK, NUM_THREADS // BK) + var a_tile = a.tile[BM, BK](block_idx.y, block) + var b_tile = b.tile[BK, BN](block, block_idx.x) + + # Load the tiles of A and B into shared memory using vectorized + # memory access. + copy_dram_to_sram_async[thread_layout=load_a_layout]( + a_smem.vectorize[simd_width, 1](), a_tile.vectorize[simd_width, 1]() + ) + copy_dram_to_sram_async[thread_layout=load_b_layout]( + b_smem.vectorize[1, simd_width](), b_tile.vectorize[1, simd_width]() + ) + + async_copy_wait_all() + barrier() + + # Iterate over the elements in the K dimension within the tiles. + @parameter + for k in range(BK): + # Load the corresponding tiles from shared memory into registers. + var a_tile = a_smem.tile[TM, 1](partition_row, k) + var b_tile = b_smem.tile[1, TN](k, partition_col) + a_reg.copy_from(a_tile) + b_reg.copy_from(b_tile) + + # Perform outer product and accumulate the partial results. + outer_product_acc(dst_reg, a_reg, b_reg) + + barrier() + + # Write the final accumulated results to the output matrix. + dst_vec.copy_from(dst_reg_vec) + + +# ===-----------------------------------------------------------------------===# +# Matrix multiplication using Tensor Cores +# ===-----------------------------------------------------------------------===# + + +fn tensor_core_matrix_multiplication[ + dtype: DType, + layout_a: Layout, + layout_b: Layout, + layout_c: Layout, + BM: Int, + BN: Int, + BK: Int, + WM: Int, + WN: Int, + MMA_M: Int, + MMA_N: Int, + MMA_K: Int, +]( + A: LayoutTensor[dtype, layout_a], + B: LayoutTensor[dtype, layout_b], + C: LayoutTensor[dtype, layout_c], +): + """ + Tiled GEMM kernel that performs matrix multiplication C = A * B using + tensor cores. + + Parameters: + dtype: The data type of the input and output tensors. + layout_a: The layout of the input tensor A. + layout_b: The layout of the input tensor B. + layout_c: The layout of the output tensor C. + BM: The block size in the M dimension. + BN: The block size in the N dimension. + BK: The block size in the K dimension. + WM: The warp tile size in the M dimension. + WN: The warp tile size in the N dimension. + MMA_M: Tensor core instruction shape in M dimension. + MMA_N: Tensor core instruction shape in N dimension. + MMA_K: Tensor core instruction shape in K dimension. + + Args: + A: The input tensor A. + B: The input tensor B. + C: The output tensor C. + + This kernel uses a tiled approach with tensor cores to compute the matrix + multiplication. It loads tiles of matrices A and B into shared memory, and + then each warp computes a partial result using tensor cores. The partial + results are accumulated in registers and finally stored back to the output + matrix C. + + The kernel assumes that the input matrices A and B are compatible for + matrix multiplication, i.e., the number of columns in A equals the number + of rows in B. + """ + alias M = C.shape[0]() # Number of rows in matrix C + alias N = C.shape[1]() # Number of columns in matrix C + alias K = A.shape[1]() # Number of columns in matrix A + + var warp_id = thread_idx.x // WARP_SIZE # Warp ID within the block + + # Calculate warp tile coordinates within the block + warp_y = warp_id // (BN // WN) + warp_x = warp_id % (BN // WN) + + # Get the warp tile of the output matrix C + C_warp_tile = C.tile[BM, BN](block_idx.y, block_idx.x).tile[WM, WN]( + warp_y, warp_x + ) + + # Ensure warp tile dimensions are multiples of instruction shape + constrained[ + WM % MMA_M == 0 and WN % MMA_N == 0 and K % MMA_K == 0, + "Warp tile should be an integer multiple of instruction shape", + ]() + + # Create tensor core operation object + mma_op = TensorCore[A.dtype, C.dtype, Index(MMA_M, MMA_N, MMA_K)]() + + # Allocate shared memory for tiles of A and B + A_sram_tile = tb[A.dtype]().row_major[BM, BK]().shared().alloc() + B_sram_tile = tb[B.dtype]().row_major[BK, BN]().shared().alloc() + + # Allocate register tile for accumulating partial results + c_reg = ( + tb[C.dtype]() + .row_major[WM // MMA_M, (WN * 4) // MMA_N]() + .local() + .alloc() + .fill(0) + ) + + # Iterate over tiles of A and B in the K dimension + for k_i in range(K // BK): + barrier() # Synchronize before loading new tiles + + # Get the tiles of A and B for the current iteration + A_dram_tile = A.tile[BM, BK](block_idx.y, k_i) + B_dram_tile = B.tile[BK, BN](k_i, block_idx.x) + + # Load tiles of A and B into shared memory asynchronously + copy_dram_to_sram_async[thread_layout = Layout.row_major(4, 8)]( + A_sram_tile.vectorize[1, 4](), A_dram_tile.vectorize[1, 4]() + ) + copy_dram_to_sram_async[thread_layout = Layout.row_major(4, 8)]( + B_sram_tile.vectorize[1, 4](), B_dram_tile.vectorize[1, 4]() + ) + + async_copy_wait_all() # Wait for async copies to complete + barrier() # Synchronize after loading tiles + + # Get the warp tiles of A and B from shared memory + A_warp_tile = A_sram_tile.tile[WM, BK](warp_y, 0) + B_warp_tile = B_sram_tile.tile[BK, WN](0, warp_x) + + # Iterate over the elements in the K dimension within the tiles + @parameter + for mma_k in range(BK // MMA_K): + + @parameter + for mma_m in range(WM // MMA_M): + + @parameter + for mma_n in range(WN // MMA_N): + # Get the register tile for the current MMA operation + c_reg_m_n = c_reg.tile[1, 4](mma_m, mma_n) + + # Get the MMA tiles of A and B + A_mma_tile = A_warp_tile.tile[MMA_M, MMA_K](mma_m, mma_k) + B_mma_tile = B_warp_tile.tile[MMA_K, MMA_N](mma_k, mma_n) + + # Load fragments of A and B into registers + a_reg = mma_op.load_a(A_mma_tile) + b_reg = mma_op.load_b(B_mma_tile) + + # Perform MMA operation and accumulate the result + var d_reg_m_n = mma_op.mma_op( + a_reg, + b_reg, + c_reg_m_n, + ) + + # Store the accumulated result back to the register tile + c_reg_m_n.copy_from(d_reg_m_n) + + # Write the final accumulated results to the output matrix + @parameter + for mma_m in range(WM // MMA_M): + + @parameter + for mma_n in range(WN // MMA_N): + var C_mma_tile = C_warp_tile.tile[MMA_M, MMA_N](mma_m, mma_n) + var c_reg_m_n = c_reg.tile[1, 4](mma_m, mma_n) + mma_op.store_d(C_mma_tile, c_reg_m_n) + + +# ===-----------------------------------------------------------------------===# +# The matrix multiplication graph operation +# ===-----------------------------------------------------------------------===# + + +@compiler.register("matrix_multiplication", num_dps_outputs=1) +struct MatrixMultiplication[algorithm: StringLiteral]: + """ + The central custom operation that dispatches to multiple different + matrix multiplication implementations, depending on target hardware and + selected algorithm. + """ + + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice[rank=2], + # starting here are the list of inputs + a: ManagedTensorSlice[type = out.type, rank = out.rank], + b: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ) raises: + # At graph compilation time, we will know what device we are compiling + # this operation for, so we can specialize it for the target hardware. + @parameter + if target == "gpu": + a_layout = a.to_layout_tensor() + b_layout = b.to_layout_tensor() + out_layout = out.to_layout_tensor() + + M = a_layout.shape[0]() + N = b_layout.shape[1]() + + gpu_ctx = ctx.get_device_context() + + # Zero out the memory in the outbound tensor. + gpu_ctx.memset( + DeviceBuffer[out.type]( + gpu_ctx, + rebind[UnsafePointer[Scalar[out.type]]](out_layout.ptr), + M * N, + owning=False, + ), + 0, + ) + + # We support several compile-time variants for the matrix + # multiplication calculation: + # - "naive": A naive matrix multiplication using LayoutTensors. + # - "coalescing": Matrix multiplication with memory coalescing + # optimizations. + # - "tiled": Matrix multiplication using a tiling strategy. + # - "tiled_register": Matrix multiplication using shared memory + # and register tiling . + # - "block_tiled": Matrix multiplication using a 2D block tiling + # strategy. + # - "block_tiled_vectorized": Matrix multiplication using a + # further-optimized 2D block tiling strategy. + # - "tensor_core": Matrix multiplication using Tensor Cores. + # In each case, the specific matrix multiplication function is + # compiled and enqueued to run on the GPU. + @parameter + if algorithm == "naive": + alias BM = 32 + alias BN = 32 + gpu_ctx.enqueue_function[ + naive_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(BN, BM), + ) + elif algorithm == "coalescing": + alias BM = 32 + alias BN = 32 + gpu_ctx.enqueue_function[ + coalescing_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(BN, BM), + ) + elif algorithm == "tiled": + alias BM = 32 + alias BN = 32 + alias BK = 32 + alias NUM_THREADS = BM * BN + gpu_ctx.enqueue_function[ + tiled_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(BM * BN), + ) + elif algorithm == "tiled_register": + alias BM = 64 + alias BN = 64 + alias BK = 8 + alias TM = 8 + alias NUM_THREADS = (BM * BN) // TM + gpu_ctx.enqueue_function[ + tiled_register_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + TM, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_THREADS), + ) + elif algorithm == "block_tiled": + alias BM = 128 + alias BN = 128 + alias BK = 8 + alias TM = 8 + alias TN = 8 + alias NUM_THREADS = (BM * BN) // (TM * TN) + gpu_ctx.enqueue_function[ + block_tiled_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + TM, + TN, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_THREADS), + ) + elif algorithm == "block_tiled_vectorized": + alias BM = 128 + alias BN = 128 + alias BK = 8 + alias TM = 8 + alias TN = 8 + alias NUM_THREADS = (BM * BN) // (TM * TN) + gpu_ctx.enqueue_function[ + block_tiled_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + TM, + TN, + NUM_THREADS, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_THREADS), + ) + elif algorithm == "tensor_core": + alias BM = 64 + alias BN = 64 + alias BK = 32 + alias WM = 32 + alias WN = 32 + alias MMA_M = 16 + alias MMA_N = 8 + alias MMA_K = 8 + alias NUM_WARPS = (BM // WM) * (BN // WN) + gpu_ctx.enqueue_function[ + tensor_core_matrix_multiplication[ + out.type, + a_layout.layout, + b_layout.layout, + out_layout.layout, + BM, + BN, + BK, + WM, + WN, + MMA_M, + MMA_N, + MMA_K, + ] + ]( + a_layout, + b_layout, + out_layout, + grid_dim=(ceildiv(N, BN), ceildiv(M, BM)), + block_dim=(NUM_WARPS * WARP_SIZE), + ) + else: + raise Error("No known matmul algorithm:", algorithm) + + else: + naive_matrix_multiplication_cpu(out, a, b) diff --git a/examples/custom_ops/kernels/top_k.mojo b/examples/custom_ops/kernels/top_k.mojo new file mode 100644 index 0000000000..0035212533 --- /dev/null +++ b/examples/custom_ops/kernels/top_k.mojo @@ -0,0 +1,158 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import iota +from sys import alignof, sizeof, num_physical_cores +from algorithm import parallelize_over_rows +from bit import log2_floor +from compiler import register +from gpu import WARP_SIZE, barrier, warp +from gpu.memory import AddressSpace, external_memory +from max.tensor import ManagedTensorSlice +from memory import Span +from utils.index import IndexList +from utils.numerics import min_or_neg_inf + + +@value +@register_passable("trivial") +struct TopKElement[T: DType]: + """Stores the value with it's index.""" + + var idx: Int32 + var val: Scalar[T] + + fn __gt__(self, rhs: Self) -> Bool: + return self.val > rhs.val + + +@register("top_k_custom", num_dps_outputs=2) +struct TopK: + """Registers the `top_k_custom` op, allowing python to use it from the `max` + package. This is a simplified version without bottom_k and sorting options, + or fused sampling. The purpose is to demonstrate concisely how you can + implement your own custom ops in Mojo that can be called from Python. MAX + has the "mo.top_k" op which is feature complete. + """ + + @staticmethod + fn execute[ + type: DType, + rank: Int, + //, # Forces the previous two params to be inferred from the args + K: Int, + target: StringLiteral, + ]( + out_vals: ManagedTensorSlice[type=type, rank=rank], + out_idxs: ManagedTensorSlice[type = DType.int32, rank=rank], + in_vals: ManagedTensorSlice[type=type, rank=rank], + ctx: DeviceContextPtr, + ) raises: + constrained[rank == 2, "rank must be 2"]() + constrained[ + not (target == "gpu" and K > WARP_SIZE), + "K can't be larger than warp size", + ]() + + var shape = in_vals.shape() + var batch_size = shape[0] + var dev_ctx = ctx.get_device_context() + + @parameter + fn top_k_gpu[ + K: Int, + ]( + out_vals: __type_of(out_vals), + out_idxs: __type_of(out_idxs), + in_vals: __type_of(in_vals), + ): + var bid = block_idx.x + var tid = thread_idx.x + + # Get a pointer to shared memory for the indices and values + var top_k_sram = external_memory[ + TopKElement[type], + address_space = AddressSpace.SHARED, + alignment = alignof[TopKElement[type]](), + ]() + + # Threads put their corresponding index and value into shared memory + top_k_sram[tid] = TopKElement(tid, in_vals[bid, tid]) + # Finish packing the values across threads in this block + barrier() + + @parameter + for i in range(K): + var reduced = top_k_sram[tid] + alias limit = log2_floor(WARP_SIZE) + + # TODO(KERN-1544): `gpu.shuffle.warp_max` support index/value + @parameter + for j in reversed(range(limit)): + alias offset = 1 << j + # Parallel reduction using warp shuffle. Each thread gets a + # value from a thread 'offset' positions higher, keeping the + # larger value. + var shuffled = TopKElement( + warp.shuffle_down(reduced.idx, offset), + warp.shuffle_down(reduced.val, offset), + ) + reduced = max(reduced, shuffled) + + # Wait for all threads to finish reducing their values + barrier() + + # Thread 0 now has the reduced max value for this index + if tid == 0: + # Store the reduced top_k index and value in global memory + out_vals[bid, i] = reduced.val + out_idxs[bid, i] = reduced.idx + + # Remove found maximum from consideration in the next iter + var index = reduced.idx % block_dim.x + top_k_sram[index].val = min_or_neg_inf[type]() + + @parameter + if target == "gpu": + dev_ctx.enqueue_function[top_k_gpu[K]]( + out_vals, + out_idxs, + in_vals, + grid_dim=batch_size, # One block per batch + block_dim=K, # One thread per K + shared_mem_bytes=K * sizeof[TopKElement[type]](), + ) + else: + + @parameter + fn top_k_cpu(start_idx: Int, end_idx: Int): + for row_idx in range(start_idx, end_idx): + var offset = (row_idx * K) + iota(out_idxs.unsafe_ptr() + offset, K) + + @parameter + fn val_greater_than(lhs: Int32, rhs: Int32) -> Bool: + return ( + in_vals[row_idx, Int(lhs)] + > in_vals[row_idx, Int(rhs)] + ) + + sort[val_greater_than]( + Span(out_idxs.unsafe_ptr() + offset, K) + ) + + for i in range(K): + var sorted_idx = Int(out_idxs[row_idx, i]) + out_vals[row_idx, i] = in_vals[row_idx, sorted_idx] + + parallelize_over_rows[top_k_cpu](shape, axis=1, grain_size=1) diff --git a/examples/custom_ops/kernels/vector_addition.mojo b/examples/custom_ops/kernels/vector_addition.mojo new file mode 100644 index 0000000000..9b7f3e7d6b --- /dev/null +++ b/examples/custom_ops/kernels/vector_addition.mojo @@ -0,0 +1,101 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from math import ceildiv + +from gpu import block_dim, block_idx, thread_idx +from gpu.host import DeviceContext +from runtime.asyncrt import DeviceContextPtr +from tensor import ManagedTensorSlice, foreach + +from utils.index import IndexList + + +fn _vector_addition_cpu( + out: ManagedTensorSlice, + lhs: ManagedTensorSlice[type = out.type, rank = out.rank], + rhs: ManagedTensorSlice[type = out.type, rank = out.rank], + ctx: DeviceContextPtr, +): + # Warning: This is an extremely inefficient implementation! It's merely an + # instructional example of how a dedicated CPU-only path can be specified + # for basic vector addition. + var vector_length = out.dim_size(0) + for i in range(vector_length): + var idx = IndexList[out.rank](i) + var result = lhs.load[1](idx) + rhs.load[1](idx) + out.store[1](idx, result) + + +fn _vector_addition_gpu( + out: ManagedTensorSlice, + lhs: ManagedTensorSlice[type = out.type, rank = out.rank], + rhs: ManagedTensorSlice[type = out.type, rank = out.rank], + ctx: DeviceContextPtr, +) raises: + # Note: The following has not been tuned for any GPU hardware, and is an + # instructional example for how a simple GPU function can be constructed + # and dispatched. + alias BLOCK_SIZE = 16 + var gpu_ctx = ctx.get_device_context() + var vector_length = out.dim_size(0) + + # The function that will be launched and distributed across GPU threads. + @parameter + fn vector_addition_gpu_kernel(length: Int): + var tid = block_dim.x * block_idx.x + thread_idx.x + if tid < length: + var idx = IndexList[out.rank](tid) + var result = lhs.load[1](idx) + rhs.load[1](idx) + out.store[1](idx, result) + + # The vector is divided up into blocks, making sure there's an extra + # full block for any remainder. + var num_blocks = ceildiv(vector_length, BLOCK_SIZE) + + # The GPU function is compiled and enqueued to run on the GPU across the + # 1-D vector, split into blocks of `BLOCK_SIZE` width. + gpu_ctx.enqueue_function[vector_addition_gpu_kernel]( + vector_length, grid_dim=num_blocks, block_dim=BLOCK_SIZE + ) + + +@compiler.register("vector_addition", num_dps_outputs=1) +struct VectorAddition: + @staticmethod + fn execute[ + # The kind of device this will be run on: "cpu" or "gpu" + target: StringLiteral, + ]( + # as num_dps_outputs=1, the first argument is the "output" + out: ManagedTensorSlice[rank=1], + # starting here are the list of inputs + lhs: ManagedTensorSlice[type = out.type, rank = out.rank], + rhs: ManagedTensorSlice[type = out.type, rank = out.rank], + # the context is needed for some GPU calls + ctx: DeviceContextPtr, + ) raises: + # For a simple elementwise operation like this, the `foreach` function + # does much more rigorous hardware-specific tuning. We recommend using + # that abstraction, with this example serving purely as an illustration + # of how lower-level functions can be used to program GPUs via Mojo. + + # At graph compilation time, we will know what device we are compiling + # this operation for, so we can specialize it for the target hardware. + @parameter + if target == "cpu": + _vector_addition_cpu(out, lhs, rhs, ctx) + elif target == "gpu": + _vector_addition_gpu(out, lhs, rhs, ctx) + else: + raise Error("No known target:", target) diff --git a/examples/custom_ops/magic.lock b/examples/custom_ops/magic.lock new file mode 100644 index 0000000000..6014677668 --- /dev/null +++ b/examples/custom_ops/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/custom_ops/mandelbrot.py b/examples/custom_ops/mandelbrot.py new file mode 100644 index 0000000000..b1d4855171 --- /dev/null +++ b/examples/custom_ops/mandelbrot.py @@ -0,0 +1,99 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + + +def create_mandelbrot_graph( + width: int, + height: int, + min_x: float, + min_y: float, + scale_x: float, + scale_y: float, + max_iterations: int, +) -> Graph: + """Configure a graph to run a Mandelbrot kernel.""" + output_dtype = DType.int32 + with Graph( + "mandelbrot", + ) as graph: + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + result = ops.custom( + name="mandelbrot", + values=[ + ops.constant(min_x, dtype=DType.float32), + ops.constant(min_y, dtype=DType.float32), + ops.constant(scale_x, dtype=DType.float32), + ops.constant(scale_y, dtype=DType.float32), + ops.constant(max_iterations, dtype=DType.int32), + ], + out_types=[TensorType(dtype=output_dtype, shape=[height, width])], + )[0].tensor + + # Return the result of the custom operation as the output of the graph. + graph.output(result) + return graph + + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + # Establish Mandelbrot set ranges. + WIDTH = 15 + HEIGHT = 15 + MAX_ITERATIONS = 100 + MIN_X = -1.5 + MAX_X = 0.7 + MIN_Y = -1.12 + MAX_Y = 1.12 + + # Configure our simple graph. + scale_x = (MAX_X - MIN_X) / WIDTH + scale_y = (MAX_Y - MIN_Y) / HEIGHT + graph = create_mandelbrot_graph( + WIDTH, HEIGHT, MIN_X, MIN_Y, scale_x, scale_y, MAX_ITERATIONS + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session that runs the graph on a GPU, if available. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + # Compile the graph. + model = session.load(graph) + + # Perform the calculation on the target device. + result = model.execute()[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Iterations to escape:") + print(result.to_numpy()) + print() diff --git a/examples/custom_ops/matrix_multiplication.py b/examples/custom_ops/matrix_multiplication.py new file mode 100644 index 0000000000..70335e7b4d --- /dev/null +++ b/examples/custom_ops/matrix_multiplication.py @@ -0,0 +1,169 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Device, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops +from numpy.typing import NDArray + + +def matrix_multiplication( + a: NDArray[np.float32], + b: NDArray[np.float32], + algorithm: str, + session: InferenceSession, + device: Device, +) -> Tensor: + dtype = DType.float32 + + # Create driver tensors from the input arrays, and move them to the + # accelerator. + a_tensor = Tensor.from_numpy(a).to(device) + b_tensor = Tensor.from_numpy(b).to(device) + + # Configure our simple one-operation graph. + with Graph( + "matrix_multiplication_graph", + input_types=[ + TensorType(dtype, shape=a_tensor.shape), + TensorType(dtype, shape=b_tensor.shape), + ], + ) as graph: + # Take in the two inputs to the graph. + a_value, b_value = graph.inputs + # The matrix multiplication custom operation takes in two matrices and + # produces a result, with the specific algorithm that is used chosen + # via compile-time parameterization. + output = ops.custom( + name="matrix_multiplication", + values=[a_value, b_value], + out_types=[ + TensorType( + dtype=a_value.tensor.dtype, + shape=[a_value.tensor.shape[0], b_value.tensor.shape[1]], + ) + ], + parameters={"algorithm": algorithm}, + )[0].tensor + graph.output(output) + + # Compile the graph. + print("Compiling...") + model = session.load(graph) + + # Perform the calculation on the target device. + print("Executing...") + result = model.execute(a_tensor, b_tensor)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + return result.to(CPU()) + + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + M = 256 + K = 256 + N = 256 + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Fill the input matrices with random values. + a = np.random.uniform(size=(M, K)).astype(np.float32) + b = np.random.uniform(size=(K, N)).astype(np.float32) + + # First, perform the matrix multiplication in NumPy. + print("A:") + print(a) + print() + + print("B:") + print(b) + print() + + print("Expected result:") + print(a @ b) + print() + + if accelerator_count() > 0: + # Then, test the various versions of matrix multiplication operations. + naive_result = matrix_multiplication(a, b, "naive", session, device) + print("Naive matrix multiplication:") + print(naive_result.to_numpy()) + print() + + coalescing_result = matrix_multiplication( + a, b, "coalescing", session, device + ) + print("Coalescing matrix multiplication:") + print(coalescing_result.to_numpy()) + print() + + tiled_result = matrix_multiplication(a, b, "tiled", session, device) + print("Tiled matrix multiplication:") + print(tiled_result.to_numpy()) + print() + + tiled_register_result = matrix_multiplication( + a, b, "tiled_register", session, device + ) + print("Shared memory and register tiling matrix multiplication:") + print(tiled_register_result.to_numpy()) + print() + + block_tiled_result = matrix_multiplication( + a, b, "block_tiled", session, device + ) + print("2D block tiled matrix multiplication:") + print(block_tiled_result.to_numpy()) + print() + + block_tiled_vectorized_result = matrix_multiplication( + a, b, "block_tiled_vectorized", session, device + ) + print("2D block tiled matrix multiplication (vectorized):") + print(block_tiled_vectorized_result.to_numpy()) + print() + + tensor_core_result = matrix_multiplication( + a, b, "tensor_core", session, device + ) + print("Matrix multiplication using Tensor Cores:") + print(tensor_core_result.to_numpy()) + print() + else: + print( + "No MAX-compatible accelerator detected, only running a naive matrix multiplication:" + ) + + naive_result = matrix_multiplication(a, b, "naive", session, device) + print("Naive matrix multiplication:") + print(naive_result.to_numpy()) + print() diff --git a/examples/custom_ops/mojoproject.toml b/examples/custom_ops/mojoproject.toml new file mode 100644 index 0000000000..f2a6f222ee --- /dev/null +++ b/examples/custom_ops/mojoproject.toml @@ -0,0 +1,23 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "An example of extending a graph with a custom Mojo operation" +name = "Custom Operations" +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +version = "0.1.0" + +[tasks] +package = "mojo package kernels/ -o kernels.mojopkg" +addition = { cmd = "python addition.py", depends-on = ["package"] } +mandelbrot = { cmd = "python mandelbrot.py", depends-on = ["package"] } +vector_addition = { cmd = "python vector_addition.py", depends-on = ["package"] } +top_k = { cmd = "python top_k.py", depends-on = ["package"] } +fused_attention = { cmd = "python fused_attention.py", depends-on = ["package"] } +matrix_multiplication = { cmd = "python matrix_multiplication.py", depends-on = ["package"] } +histogram = { cmd = "python histogram.py", depends-on = ["package"] } +benchmark = { cmd = "mojo benchmarks.mojo", depends-on = ["package"] } +test = { depends-on = ["addition", "mandelbrot", "vector_addition", "top_k", "fused_attention", "matrix_multiplication", "benchmark"] } + +[dependencies] +python = ">=3.9,<3.13" +max = ">=24.6.0.dev2024090821" diff --git a/examples/custom_ops/parametric_addition.py b/examples/custom_ops/parametric_addition.py new file mode 100644 index 0000000000..e4f0d1d5a7 --- /dev/null +++ b/examples/custom_ops/parametric_addition.py @@ -0,0 +1,82 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + rows = 5 + columns = 10 + dtype = DType.float32 + + # Configure our simple one-operation graph. + graph = Graph( + "addition", + # The custom Mojo operation is referenced by its string name, and we + # need to provide inputs as a list as well as expected output types. + # Since the custom operation is parametric, we need to provide the + # parameters as a dictionary. + forward=lambda x: ops.custom( + name="add_constant_custom", + values=[x], + out_types=[TensorType(dtype=x.dtype, shape=x.tensor.shape)], + parameters={"value": 5}, + )[0].tensor, + input_types=[ + TensorType(dtype, shape=[rows, columns]), + ], + ) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Compile the graph. + model = session.load(graph) + + # Fill an input matrix with random values. + x_values = np.random.uniform(size=(rows, columns)).astype(np.float32) + + # Create a driver tensor from this, and move it to the accelerator. + x = Tensor.from_numpy(x_values).to(device) + + # Perform the calculation on the target device. + result = model.execute(x)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Graph result:") + print(result.to_numpy()) + print() + + print("Expected result:") + print(x_values + 5) diff --git a/examples/custom_ops/top_k.py b/examples/custom_ops/top_k.py new file mode 100644 index 0000000000..3a77d793f7 --- /dev/null +++ b/examples/custom_ops/top_k.py @@ -0,0 +1,198 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +import argparse +import os +from collections import defaultdict +from pathlib import Path +from typing import DefaultDict + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine.api import InferenceSession +from max.graph import Graph, TensorType, ops +from numpy.typing import NDArray + +INPUT_TEXT = """ +The quick rabbit runs past the brown fox +The quick rabbit jumps over the brown dog +The quick dog chases past the lazy fox +The quick dog runs through the tall trees +The quick brown fox jumps over the lazy dog +The brown dog sleeps under the shady tree +The brown rabbit hops under the tall tree +The brown fox runs through the forest trees +The brown fox watches the sleeping rabbit +The lazy fox watches over the sleeping dog +The lazy dog watches the quick rabbit +The shady tree shelters the brown rabbit +The shady fox sleeps under the old tree +The sleeping fox rests beside the shady tree +The lazy rabbit rests beside the brown fox +""" + + +class NextWordFrequency: + def __init__(self, text): + # nested `DefaultDict` to create the keys when first indexed + # Structure looks like: {"word": {"next_word": count}} + self.word_frequencies: DefaultDict[str, DefaultDict[str, int]] = ( + defaultdict(lambda: defaultdict(int)) + ) + + # Track the largest amount of next words to pad the tensor + self.max_next_words = 0 + + # Build word frequencies + words = text.lower().split() + for i in range(len(words) - 1): + current_word = words[i] + next_word = words[i + 1] + self.word_frequencies[current_word][next_word] += 1 + self.max_next_words = max( + self.max_next_words, len(self.word_frequencies[current_word]) + ) + + def next_word_probabilities(self, words) -> NDArray[np.float32]: + if not words: + return np.empty(0, dtype=np.float32) + + # List to store the probability distributions for each word + prob_distributions = [] + + for word in words: + if word not in self.word_frequencies: + raise ValueError( + f"Error: cannot predict word after '{word}', not found in input text" + ) + + for word in words: + frequencies = self.word_frequencies[word] + freq_list = np.array(list(frequencies.values()), dtype=np.float32) + + # Avoid division by zero + total = freq_list.sum() + if total > 0: + freq_list /= total + + # Pad to largest length of next words + padded_dist = np.pad( + freq_list, + (0, self.max_next_words - len(freq_list)), + mode="constant", + constant_values=0, + ) + prob_distributions.append(padded_dist) + + return np.stack(prob_distributions, axis=0) + + def __getitem__(self, idx): + return self.word_frequencies[idx] + + +# Example usage +def main(): + parser = argparse.ArgumentParser( + description="Top-K sampling with custom ops" + ) + parser.add_argument( + "--cpu", + action="store_true", + help="Run on CPU even if there is a GPU available.", + ) + args = parser.parse_args() + + # This is necessary only for Modular internal CI. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + # Get the path to our compiled custom ops + path = Path(__file__).parent / "kernels.mojopkg" + + # Initialize the next word frequency for each unique word + frequencies = NextWordFrequency(INPUT_TEXT) + word_predictions = ["the", "quick", "brown"] + + # Get probabilities of next word for each word in the `word_predictions` list + probabilities = frequencies.next_word_probabilities(word_predictions) + + batch_size = len(probabilities) + K = frequencies.max_next_words + + # Configure our simple one-operation graph. + with Graph( + "top_k_sampler", + # The dtype and shape of the probabilities being passed in + input_types=[TensorType(DType.float32, shape=[batch_size, K])], + ) as graph: + # Take the probabilities as a single input to the graph. + probs, *_ = graph.inputs + + results = ops.custom( + # This is the custom op name defined in `kernels/top_k.mojo`. + name="top_k_custom", + # Passes `K` as a compile-time Mojo `Int`. + parameters={"K": K}, + # Passes the probabilities as a single input to the graph. + values=[probs], + out_types=[ + # The output values dtype and shape + TensorType(probs.tensor.dtype, probs.tensor.shape), + # The output indices dtype and shape + TensorType(DType.int32, probs.tensor.shape), + ], + ) + graph.output(*results) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if args.cpu or accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession(devices=[device], custom_extensions=path) + + # Compile the graph. + model = session.load(graph) + + # Create a driver tensor from the next word probabilities + input_tensor = Tensor.from_numpy(probabilities).to(device) + + print(f"Sampling top k: {K} for batch size: {batch_size}") + + values, indices = model.execute(input_tensor) + + # Copy values and indices back to the CPU to be read. + assert isinstance(values, Tensor) + values = values.to(CPU()) + np_values = values.to_numpy() + + assert isinstance(indices, Tensor) + indices = indices.to(CPU()) + np_indices = indices.to_numpy() + + for i in range(batch_size): + print(f"\nPredicted word after `{word_predictions[i]}`") + print("-------------------------------") + print("| word | confidence |") + print("-------------------------------") + keys = list(frequencies.word_frequencies[word_predictions[i]].keys()) + + for j in range(len(np_indices[i])): + # If it's a padded index/value, break out of the loop + if j > len(keys) - 1: + break + print(f"| {keys[np_indices[i][j]]:<13}| {np_values[i][j]:<13.8}|") + print("-------------------------------") + + +if __name__ == "__main__": + main() diff --git a/examples/custom_ops/vector_addition.py b/examples/custom_ops/vector_addition.py new file mode 100644 index 0000000000..9ed124f6a8 --- /dev/null +++ b/examples/custom_ops/vector_addition.py @@ -0,0 +1,92 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from pathlib import Path + +import numpy as np +from max.driver import CPU, Accelerator, Tensor, accelerator_count +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops + +if __name__ == "__main__": + # This is necessary only in specific build environments. + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + path = Path(__file__).parent / "kernels.mojopkg" + + vector_width = 10 + dtype = DType.float32 + + # Configure our simple one-operation graph. + with Graph( + "vector_addition", + input_types=[ + TensorType(dtype, shape=[vector_width]), + TensorType(dtype, shape=[vector_width]), + ], + ) as graph: + # Take in the two inputs to the graph. + lhs, rhs = graph.inputs + output = ops.custom( + name="vector_addition", + values=[lhs, rhs], + out_types=[ + TensorType(dtype=lhs.tensor.dtype, shape=lhs.tensor.shape) + ], + )[0].tensor + graph.output(output) + + # Place the graph on a GPU, if available. Fall back to CPU if not. + device = CPU() if accelerator_count() == 0 else Accelerator() + + # Set up an inference session for running the graph. + session = InferenceSession( + devices=[device], + custom_extensions=path, + ) + + # Compile the graph. + model = session.load(graph) + + # Fill input matrices with random values. + lhs_values = np.random.uniform(size=(vector_width)).astype(np.float32) + rhs_values = np.random.uniform(size=(vector_width)).astype(np.float32) + + # Create driver tensors from this, and move them to the accelerator. + lhs_tensor = Tensor.from_numpy(lhs_values).to(device) + rhs_tensor = Tensor.from_numpy(rhs_values).to(device) + + # Perform the calculation on the target device. + result = model.execute(lhs_tensor, rhs_tensor)[0] + + # Copy values back to the CPU to be read. + assert isinstance(result, Tensor) + result = result.to(CPU()) + + print("Left-hand-side values:") + print(lhs_values) + print() + + print("Right-hand-side values:") + print(rhs_values) + print() + + print("Graph result:") + print(result.to_numpy()) + print() + + print("Expected result:") + print(lhs_values + rhs_values) diff --git a/examples/gpu_functions/README.md b/examples/gpu_functions/README.md new file mode 100755 index 0000000000..3e09a9c092 --- /dev/null +++ b/examples/gpu_functions/README.md @@ -0,0 +1,50 @@ +# Compiling and running Mojo functions on a GPU + +> [!NOTE] +> This is a preview of an interface for programming GPUs using Mojo, +> and may be subject to change before the next stable release. + +Mojo functions can be compiled and dispatched on a GPU, and these examples +show a few different ways of doing so. They also demonstrate how to allocate +and move tensors between CPU and GPU via the MAX Driver API. These examples are +complementary with +[those that show how to program custom graph operations](../custom_ops/) to +run on the CPU or GPU in Mojo. + +> [!NOTE] +> The Mojo interfaces to the MAX Driver API are under development, are +> not fully documented, and may change before the next stable release. + +A [MAX-compatible GPU](https://docs.modular.com/max/faq/#gpu-requirements) is +necessary to run these examples. + +The four examples of GPU functions defined in Mojo consist of: + +- **vector_addition.mojo**: A common "hello world" example for GPU programming, + this adds two vectors together in the same way as seen in Chapter 2 of + ["Programming Massively Parallel Processors"](https://www.sciencedirect.com/book/9780323912310/programming-massively-parallel-processors). +- **grayscale.mojo**: The parallelized conversion of an RGB image to grayscale, + as seen in Chapter 3 of "Programming Massively Parallel Processors". +- **naive_matrix_multiplication.mojo**: An implementation of naive matrix + multiplication, again inspired by Chapter 3 of "Programming Massively + Parallel Processors". +- **mandelbrot.mojo**: A parallel calculation of the number of iterations to + escape in the Mandelbrot set. An example of the same computation performed as + a custom graph operation can be found [here](../custom_ops/). + +A single Magic command runs each of the examples: + +```sh +magic run vector_addition +magic run grayscale +magic run naive_matrix_multiplication +magic run mandelbrot +``` + +For larger computations, we recommend staging them as part of a +[MAX Graph](https://docs.modular.com/max/tutorials/get-started-with-max-graph-in-python). +The graph compiler within MAX performs intelligent operator fusion, +orchestrates efficient runtime execution, and more. The same Mojo code running +on a GPU in one of these examples can be easily translated to +[a custom operation](https://docs.modular.com/max/tutorials/build-custom-ops) +and placed inside a node in a MAX Graph. diff --git a/examples/gpu_functions/grayscale.mojo b/examples/gpu_functions/grayscale.mojo new file mode 100755 index 0000000000..ec8657fbba --- /dev/null +++ b/examples/gpu_functions/grayscale.mojo @@ -0,0 +1,132 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from gpu.host import Dim +from gpu.id import block_dim, block_idx, thread_idx +from math import ceildiv +from max.driver import ( + Device, + DynamicTensor, + Tensor, + accelerator_device, + cpu_device, +) +from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator + +alias channel_dtype = DType.uint8 +alias internal_float_dtype = DType.float32 +alias tensor_rank = 3 +alias TensorType = DynamicTensor[type=channel_dtype, rank=tensor_rank].Type + + +def print_image[h: Int, w: Int](t: Tensor[channel_dtype, 3]): + """A helper function to print out the grayscale channel intensities.""" + out = t.unsafe_slice() + for row in range(h): + for col in range(w): + var v = out[row, col, 0] + if v < 100: + print(" ", end="") + if v < 10: + print(" ", end="") + print(v, " ", end="") + print("") + + +fn color_to_grayscale_conversion( + width: Int, + height: Int, + image: TensorType, + out: TensorType, +): + """Converting each RGB pixel to grayscale, parallelized across the output tensor on the GPU. + """ + row = block_dim.y * block_idx.y + thread_idx.y + col = block_dim.x * block_idx.x + thread_idx.x + + if col < width and row < height: + red = image[row, col, 0].cast[internal_float_dtype]() + green = image[row, col, 1].cast[internal_float_dtype]() + blue = image[row, col, 2].cast[internal_float_dtype]() + gray = 0.21 * red + 0.71 * green + 0.07 * blue + + out[row, col, 0] = gray.cast[channel_dtype]() + + +def main(): + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias IMAGE_WIDTH = 5 + alias IMAGE_HEIGHT = 10 + alias NUM_CHANNELS = 3 + + # Allocate the input image tensor on the host. + rgb_tensor = Tensor[channel_dtype, tensor_rank]( + (IMAGE_HEIGHT, IMAGE_WIDTH, NUM_CHANNELS), host_device + ) + + # Fill the image with initial colors. + for row in range(IMAGE_HEIGHT): + for col in range(IMAGE_WIDTH): + rgb_tensor[row, col, 0] = row + col + rgb_tensor[row, col, 1] = row + col + 20 + rgb_tensor[row, col, 2] = row + col + 40 + + # Move the image tensor to the accelerator. + rgb_tensor = rgb_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the grayscale image. + gray_tensor = Tensor[channel_dtype, tensor_rank]( + (IMAGE_HEIGHT, IMAGE_WIDTH, 1), gpu_device + ) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[color_to_grayscale_conversion](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(IMAGE_WIDTH, BLOCK_SIZE) + num_row_blocks = ceildiv(IMAGE_HEIGHT, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + IMAGE_WIDTH, + IMAGE_HEIGHT, + rgb_tensor.unsafe_slice(), + gray_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + gray_tensor = gray_tensor.move_to(host_device) + + print("Resulting grayscale image:") + print_image[IMAGE_HEIGHT, IMAGE_WIDTH](gray_tensor) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) diff --git a/examples/gpu_functions/magic.lock b/examples/gpu_functions/magic.lock new file mode 100644 index 0000000000..6014677668 --- /dev/null +++ b/examples/gpu_functions/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/gpu_functions/mandelbrot.mojo b/examples/gpu_functions/mandelbrot.mojo new file mode 100755 index 0000000000..608eeea706 --- /dev/null +++ b/examples/gpu_functions/mandelbrot.mojo @@ -0,0 +1,137 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from collections.string import StringSlice +from complex import ComplexSIMD +from gpu.host import Dim +from gpu.id import thread_idx, block_dim, block_idx +from math import ceildiv +from max.driver import DynamicTensor, Tensor, accelerator_device, cpu_device +from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator + +alias float_dtype = DType.float32 +alias int_dtype = DType.int32 +alias TensorType = DynamicTensor[type=int_dtype, rank=2].Type + + +def draw_mandelbrot[h: Int, w: Int](t: Tensor[int_dtype, 2], max: Int): + """A helper function to visualize the Mandelbrot set in ASCII art.""" + alias sr = StringSlice("....,c8M@jawrpogOQEPGJ") + out = t.unsafe_slice() + for row in range(h): + for col in range(w): + var v = out[row, col] + if v < max: + var idx = Int(v % len(sr)) + var p = sr[idx] + print(p, end="") + else: + print(" ", end="") + print("") + + +fn mandelbrot( + min_x: Scalar[float_dtype], + min_y: Scalar[float_dtype], + scale_x: Scalar[float_dtype], + scale_y: Scalar[float_dtype], + max_iterations: Scalar[int_dtype], + out: TensorType, +): + """The per-element calculation of iterations to escape in the Mandelbrot set. + """ + # Obtain the position in the grid from the X, Y thread locations. + var row = block_dim.y * block_idx.y + thread_idx.y + var col = block_dim.x * block_idx.x + thread_idx.x + + # Calculate the complex C corresponding to that grid location. + var cx = min_x + col * scale_x + var cy = min_y + row * scale_y + var c = ComplexSIMD[float_dtype, 1](cx, cy) + + # Perform the Mandelbrot iteration loop calculation. + var z = ComplexSIMD[float_dtype, 1](0, 0) + var iters = Scalar[int_dtype](0) + + var in_set_mask: Scalar[DType.bool] = True + for _ in range(max_iterations): + if not any(in_set_mask): + break + in_set_mask = z.squared_norm() <= 4 + iters = in_set_mask.select(iters + 1, iters) + z = z.squared_add(c) + + # Write out the resulting iterations to escape. + out[row, col] = iters + + +def main(): + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[mandelbrot](gpu_device) + + # Set the resolution of the Mandelbrot set grid that will be calculated. + alias GRID_WIDTH = 60 + alias GRID_HEIGHT = 25 + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(GRID_WIDTH, BLOCK_SIZE) + num_row_blocks = ceildiv(GRID_HEIGHT, BLOCK_SIZE) + + # Set the parameters for the area of the Mandelbrot set we'll be examining. + alias MIN_X: Scalar[float_dtype] = -2.0 + alias MAX_X: Scalar[float_dtype] = 0.7 + alias MIN_Y: Scalar[float_dtype] = -1.12 + alias MAX_Y: Scalar[float_dtype] = 1.12 + alias SCALE_X = (MAX_X - MIN_X) / GRID_WIDTH + alias SCALE_Y = (MAX_Y - MIN_Y) / GRID_HEIGHT + alias MAX_ITERATIONS = 100 + + # Allocate a tensor on the target device to hold the resulting set. + out_tensor = Tensor[int_dtype, 2]((GRID_HEIGHT, GRID_WIDTH), gpu_device) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + MIN_X, + MIN_Y, + SCALE_X, + SCALE_Y, + MAX_ITERATIONS, + out_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + out_tensor = out_tensor.move_to(host_device) + + # Draw the final Mandelbrot set. + draw_mandelbrot[GRID_HEIGHT, GRID_WIDTH](out_tensor, max=MAX_ITERATIONS) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) diff --git a/examples/gpu_functions/mojoproject.toml b/examples/gpu_functions/mojoproject.toml new file mode 100755 index 0000000000..242792e7fb --- /dev/null +++ b/examples/gpu_functions/mojoproject.toml @@ -0,0 +1,17 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Examples of using Mojo to write GPU functions" +name = "Mojo GPU Functions" +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +version = "0.1.0" + +[tasks] +vector_addition = "mojo run vector_addition.mojo" +grayscale = "mojo run grayscale.mojo" +naive_matrix_multiplication = "mojo run naive_matrix_multiplication.mojo" +mandelbrot = "mojo run mandelbrot.mojo" +test = { depends-on = ["vector_addition", "grayscale", "naive_matrix_multiplication", "mandelbrot"] } + +[dependencies] +max = ">=24.6.0.dev2024090821" diff --git a/examples/gpu_functions/naive_matrix_multiplication.mojo b/examples/gpu_functions/naive_matrix_multiplication.mojo new file mode 100755 index 0000000000..1e0d6e0dd4 --- /dev/null +++ b/examples/gpu_functions/naive_matrix_multiplication.mojo @@ -0,0 +1,118 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from gpu.host import Dim +from gpu.id import block_dim, block_idx, thread_idx +from math import ceildiv +from max.driver import ( + Device, + DynamicTensor, + Tensor, + accelerator_device, + cpu_device, +) +from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator + +alias float_dtype = DType.float32 +alias tensor_rank = 2 +alias TensorType = DynamicTensor[type=float_dtype, rank=tensor_rank].Type + + +fn naive_matrix_multiplication( + i: Int, + j: Int, + k: Int, + m: TensorType, + n: TensorType, + p: TensorType, +): + """Naive matrix multiplication of M_ij x N_jk = P_ik.""" + row = block_dim.y * block_idx.y + thread_idx.y + col = block_dim.x * block_idx.x + thread_idx.x + + if row < i and col < k: + for j_index in range(j): + p[row, col] = p[row, col] + m[row, j_index] * n[j_index, col] + + +def main(): + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias I = 5 + alias J = 4 + alias K = 6 + + # Allocate the two input matrices on the host. + m_tensor = Tensor[float_dtype, tensor_rank]((I, J), host_device) + n_tensor = Tensor[float_dtype, tensor_rank]((J, K), host_device) + + # Fill them with initial values. + for m_row in range(I): + for m_col in range(J): + m_tensor[m_row, m_col] = m_row - m_col + + for n_row in range(J): + for n_col in range(K): + n_tensor[n_row, n_col] = n_row + n_col + + print("M matrix:", m_tensor) + print("N matrix:", n_tensor) + + # Move the input matrices to the accelerator. + m_tensor = m_tensor.move_to(gpu_device) + n_tensor = n_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the calculation results. + p_tensor = Tensor[float_dtype, tensor_rank]((I, K), gpu_device) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[naive_matrix_multiplication](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + num_col_blocks = ceildiv(I, BLOCK_SIZE) + num_row_blocks = ceildiv(J, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + I, + J, + K, + m_tensor.unsafe_slice(), + n_tensor.unsafe_slice(), + p_tensor.unsafe_slice(), + grid_dim=Dim(num_col_blocks, num_row_blocks), + block_dim=Dim(BLOCK_SIZE, BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + p_tensor = p_tensor.move_to(host_device) + + print("Resulting matrix:", p_tensor) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) diff --git a/examples/gpu_functions/vector_addition.mojo b/examples/gpu_functions/vector_addition.mojo new file mode 100755 index 0000000000..951eb3ed50 --- /dev/null +++ b/examples/gpu_functions/vector_addition.mojo @@ -0,0 +1,103 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from gpu.host import Dim +from gpu.id import block_dim, block_idx, thread_idx +from math import ceildiv +from max.driver import ( + Device, + DynamicTensor, + Tensor, + accelerator_device, + cpu_device, +) +from max.driver.accelerator import compile +from sys import has_nvidia_gpu_accelerator + +alias float_dtype = DType.float32 +alias tensor_rank = 1 +alias TensorType = DynamicTensor[type=float_dtype, rank=tensor_rank].Type + + +fn vector_addition( + length: Int, + lhs: TensorType, + rhs: TensorType, + out: TensorType, +): + """The calculation to perform across the vector on the GPU.""" + tid = block_dim.x * block_idx.x + thread_idx.x + if tid < length: + var result = lhs[tid] + rhs[tid] + out[tid] = result + + +def main(): + @parameter + if has_nvidia_gpu_accelerator(): + # Attempt to connect to a compatible GPU. If one is not found, this will + # error out and exit. + gpu_device = accelerator_device() + host_device = cpu_device() + + alias VECTOR_WIDTH = 10 + + # Allocate the two input tensors on the host. + lhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) + rhs_tensor = Tensor[float_dtype, 1]((VECTOR_WIDTH), host_device) + + # Fill them with initial values. + for i in range(VECTOR_WIDTH): + lhs_tensor[i] = 1.25 + rhs_tensor[i] = 2.5 + + # Move the input tensors to the accelerator. + lhs_tensor = lhs_tensor.move_to(gpu_device) + rhs_tensor = rhs_tensor.move_to(gpu_device) + + # Allocate a tensor on the accelerator to host the calculation results. + out_tensor = Tensor[float_dtype, tensor_rank]( + (VECTOR_WIDTH), gpu_device + ) + + # Compile the function to run across a grid on the GPU. + gpu_function = compile[vector_addition](gpu_device) + + # The grid is divided up into blocks, making sure there's an extra + # full block for any remainder. This hasn't been tuned for any specific + # GPU. + alias BLOCK_SIZE = 16 + var num_blocks = ceildiv(VECTOR_WIDTH, BLOCK_SIZE) + + # Launch the compiled function on the GPU. The target device is specified + # first, followed by all function arguments. The last two named parameters + # are the dimensions of the grid in blocks, and the block dimensions. + gpu_function( + gpu_device, + VECTOR_WIDTH, + lhs_tensor.unsafe_slice(), + rhs_tensor.unsafe_slice(), + out_tensor.unsafe_slice(), + grid_dim=Dim(num_blocks), + block_dim=Dim(BLOCK_SIZE), + ) + + # Move the output tensor back onto the CPU so that we can read the results. + out_tensor = out_tensor.move_to(host_device) + + print("Resulting vector:", out_tensor) + else: + print( + "These examples require a MAX-compatible NVIDIA GPU and none was" + " detected." + ) diff --git a/examples/graph-api/README.md b/examples/graph-api/README.md new file mode 100644 index 0000000000..faf99255c3 --- /dev/null +++ b/examples/graph-api/README.md @@ -0,0 +1,36 @@ +# MAX Graph API examples + +These examples demonstrate the flexibility of the +[MAX Graph API](https://docs.modular.com/max/graph/), a +[Mojo](https://docs.modular.com/mojo/) interface to the advanced graph compiler +within MAX. + +## Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run any of the +following commands: + +```sh +magic run basic +``` + +## Conda instructions + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda activate max-repo + +mojo basics/basic.🔥 + +conda deactivate +``` + +## [Graph API introduction](basics/) + +A basic Mojo Graph API example that provides an introduction to how to +stage and run a computational graph on MAX, following the +[getting started guide](https://docs.modular.com/max/tutorials/get-started-with-max-graph). diff --git a/examples/graph-api/basics/README.md b/examples/graph-api/basics/README.md new file mode 100644 index 0000000000..c37b59b418 --- /dev/null +++ b/examples/graph-api/basics/README.md @@ -0,0 +1,26 @@ +# Basic example for MAX Graph API 🔥 + +This is a very simple example of how to build a model with the MAX Graph API +and execute it with MAX Engine. + +For a walkthrough of this code, see the quickstart guide to [build a graph with +MAX Graph](https://docs.modular.com/max/tutorials/get-started-with-max-graph-in-python/). + +## Usage + +First, [install Magic](https://docs.modular.com/magic/). + +Then run `basic.🔥` from a command line: + +```shell +magic run mojo basic.🔥 +``` + +You should see the following output: + +```shell +Input: input0 +Output: output0 +Tensor([[1.0], +[1.0]], dtype=float32, shape=2x1) +``` diff --git "a/examples/graph-api/basics/basic.\360\237\224\245" "b/examples/graph-api/basics/basic.\360\237\224\245" new file mode 100644 index 0000000000..070a159653 --- /dev/null +++ "b/examples/graph-api/basics/basic.\360\237\224\245" @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.engine import InferenceSession +from max.graph import Graph, TensorType, ops +from max.tensor import Tensor, TensorShape + + +# This example highlights the very basic API structure around building a MAX +# Graph model and executing it through the MAX engine APIS. +# Simply run this mojo file to create, load, and execute this simple model. +def main(): + graph = Graph(TensorType(DType.float32, 2, 6)) + + # Create a constant for usage in the matmul op below: + matmul_constant_value = Tensor[DType.float32](TensorShape(6, 1), 0.15) + matmul_constant = graph.constant(matmul_constant_value) + + # Start adding a sequence of operator calls to build the graph. + # We can use the subscript notation to get the graph's first input tensor: + matmul = graph[0] @ matmul_constant + relu = ops.relu(matmul) + softmax = ops.softmax(relu) + graph.output(softmax) + + # Load the graph: + session = InferenceSession() + model = session.load(graph) + + # Print the input/output names: + in_names = model.get_model_input_names() + for name in in_names: + print("Input:", name[]) + out_names = model.get_model_output_names() + for name in out_names: + print("Output:", name[]) + + # Execute the model: + input = Tensor[DType.float32](TensorShape(2, 6), 0.5) + results = model.execute("input0", input^) + output = results.get[DType.float32]("output0") + print(output) diff --git a/examples/graph-api/environment.yml b/examples/graph-api/environment.yml new file mode 100644 index 0000000000..1395c6958d --- /dev/null +++ b/examples/graph-api/environment.yml @@ -0,0 +1,9 @@ +name: max-repo +channels: + - pytorch + - https://conda.modular.com/max/ + - conda-forge + - defaults +dependencies: + - python>=3.11,<3.12 + - max>=24.4.0dev6 diff --git a/examples/graph-api/magic.lock b/examples/graph-api/magic.lock new file mode 100644 index 0000000000..6014677668 --- /dev/null +++ b/examples/graph-api/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/graph-api/pixi.toml b/examples/graph-api/pixi.toml new file mode 100644 index 0000000000..0070a3f9de --- /dev/null +++ b/examples/graph-api/pixi.toml @@ -0,0 +1,15 @@ +[project] +name = "Mojo Graph API Examples" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[tasks] +basic = "mojo basics/basic.🔥" +test = { depends-on = ["basic"] } + +[dependencies] +python = ">=3.9,<3.13" +max = "*" diff --git a/examples/graph-api/requirements.txt b/examples/graph-api/requirements.txt new file mode 100644 index 0000000000..53f6a450c2 --- /dev/null +++ b/examples/graph-api/requirements.txt @@ -0,0 +1 @@ +huggingface_hub >=0.24.6,<0.25 diff --git a/examples/gui/.gitattributes b/examples/gui/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/examples/gui/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/examples/gui/.gitignore b/examples/gui/.gitignore new file mode 100644 index 0000000000..a6184bd794 --- /dev/null +++ b/examples/gui/.gitignore @@ -0,0 +1 @@ +app.log diff --git a/examples/gui/.streamlit/config.toml b/examples/gui/.streamlit/config.toml new file mode 100644 index 0000000000..c6c5316861 --- /dev/null +++ b/examples/gui/.streamlit/config.toml @@ -0,0 +1,9 @@ +[client] +showSidebarNavigation = false + +[server] +runOnSave = true + +[theme] +base = "dark" +primaryColor = "#8799ff" diff --git a/examples/gui/README.md b/examples/gui/README.md new file mode 100644 index 0000000000..ddfb444417 --- /dev/null +++ b/examples/gui/README.md @@ -0,0 +1,13 @@ +# MAX Examples GUI + +Example project showing how to create a GUI that calls MAX using the Python +[streamlit](https://streamlit.io/) library. + +## Quick Start + +Install Magic and run the GUI: + +```bash +curl -fsSL https://developer.modular.com/magic | bash +magic run gui +``` diff --git a/examples/gui/home.py b/examples/gui/home.py new file mode 100755 index 0000000000..0b12b27b2d --- /dev/null +++ b/examples/gui/home.py @@ -0,0 +1,32 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import streamlit as st +from shared import menu + +st.set_page_config("MAX", "⚡️") +menu() + +"""# MAX ⚡️ Examples + +Welcome to MAX! Select an example to get started: +""" + +if st.button("🦙 Llama3.1"): + st.switch_page("pages/llama3_1.py") +elif st.button("👓 BERT"): + st.switch_page("pages/bert.py") +elif st.button("🎨 Stable Diffusion 1.5"): + st.switch_page("pages/stable-diffusion.py") +elif st.button("🔍 YOLO"): + st.switch_page("pages/yolo.py") diff --git a/examples/gui/mojoproject.toml b/examples/gui/mojoproject.toml new file mode 100644 index 0000000000..272a71e3db --- /dev/null +++ b/examples/gui/mojoproject.toml @@ -0,0 +1,39 @@ +[project] +name = "gui" +version = "1.0.0" +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +max = "*" +numpy = "1.25.2" +pillow = "<=10.4.0" +protobuf = "<=4.25.3" +tokenizers = "<0.21" +transformers = "<4.47" + +[pypi-dependencies] +pipelines = { path = "../../src/max", editable = true} +accelerate = "<=0.34.2" +diffusers = "<=0.30.3" +gguf = "<=0.10.0" +onnxruntime = "<=1.18.1" +onnxslim = "<=0.1.34" +opencv-python = "<=4.10.0.84" +sentencepiece = "<=0.2.0" +streamlit = "<=1.38.0" +torch = "<=2.5.1" +ultralytics = "<=8.2.103" + +# RAG specific packages +chromadb = "<=0.4.17" +docx2txt = "<=0.8" +EbookLib = "<=0.18" +fastembed = "<=0.3.6" +ftfy = "<=6.2.3" +html2text = "<=2024.2.26" +llama-index = "<=0.11.14" +nbconvert = "<=7.16.4" + +[tasks] +gui = "streamlit run home.py" diff --git a/examples/gui/pages/bert.py b/examples/gui/pages/bert.py new file mode 100644 index 0000000000..b5088e18da --- /dev/null +++ b/examples/gui/pages/bert.py @@ -0,0 +1,151 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +import os +import time + +import pandas as pd +import streamlit as st +import torch +from max import engine +from max.dtype import DType +from shared import menu, modular_cache_dir +from transformers import BertForMaskedLM, BertTokenizer + +st.set_page_config("Bert", page_icon="👓") +menu() + +""" +# 👓 Bert + +A basic implementation of Bert using MAX. Type a text string, using `[MASK]` to indicate where you want the model to predict a word. +""" + +HF_MODEL_NAME = "bert-base-uncased" + + +# If batch, seq_len, or mlm options change, recompile the torchscript. +@st.cache_data +def compile_torchscript(batch: int, seq_len: int): + model = BertForMaskedLM.from_pretrained(HF_MODEL_NAME) + input_dict = { + "input_ids": torch.zeros((batch, seq_len), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seq_len), dtype=torch.int64), + "token_type_ids": torch.zeros((batch, seq_len), dtype=torch.int64), + } + model.eval() + model.config.return_dict = False + with torch.no_grad(): + traced_model = torch.jit.trace( + model, example_kwarg_inputs=dict(input_dict), strict=False + ) + torch.jit.save(traced_model, model_path) + + +@st.cache_resource(show_spinner="Starting MAX Bert Inference Session") +def max_bert_session(model_path: str, batch: int, seq_len: int): + # Wait short time for spinner to start correctly + time.sleep(1) + session = engine.InferenceSession() + inputs = [ + torch.zeros((batch, seq_len), dtype=torch.int64), + torch.zeros((batch, seq_len), dtype=torch.int64), + torch.zeros((batch, seq_len), dtype=torch.int64), + ] + input_spec_list = [ + engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64) + for tensor in inputs + ] + return session.load(model_path, input_specs=input_spec_list) + + +@st.cache_data() +def get_tokenizer(): + return BertTokenizer.from_pretrained(HF_MODEL_NAME) + + +def softmax(logits): + exp_logits = torch.exp(logits - torch.max(logits)) + return exp_logits / exp_logits.sum(dim=-1, keepdim=True) + + +model_state = st.empty() + +show_predictions = st.sidebar.checkbox("Show top 5 predictions", True) +model_path = st.sidebar.text_input( + "Model Path", + os.path.join(modular_cache_dir(), "bert-mlm.torchscript"), +) +batch = st.sidebar.number_input("Batch Size", 1, 64) +seq_len = st.sidebar.slider("Sequence Length", 128, 1024) +input_text = st.text_input("Text Input", "Don't [MASK] about it") + +compile_torchscript(batch, seq_len) + +if st.button("Predict Word"): + masks = input_text.split("[MASK]") + if len(masks) > 2: + st.error("Cannot have more than a single [MASK] in the input text") + exit(1) + if len(masks) < 2: + st.error("Require at least one [MASK] in the input text") + exit(1) + + model = max_bert_session(model_path, batch, seq_len) + + tokenizer = get_tokenizer() + inputs = tokenizer( + input_text, + return_tensors="pt", + padding="max_length", + truncation=True, + max_length=seq_len, + ) + + masked_index = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero( + as_tuple=True + )[1] + + outputs = model.execute_legacy(**inputs)["result0"] + + logits = torch.from_numpy(outputs[0, masked_index, :]) + + predicted_token_id = logits.argmax(dim=-1) + predicted_tokens = tokenizer.decode( + [predicted_token_id], + skip_special_tokens=True, + clean_up_tokenization_spaces=True, + ) + + st.text_area( + "Filled Mask", input_text.replace("[MASK]", predicted_tokens, 40) + ) + + if show_predictions: + # Get top N predictions for the [MASK] token + top_n = 5 + mask_logits = logits.squeeze(0) # Remove batch dimension + top_n_probs, top_n_indices = torch.topk(softmax(mask_logits), top_n) + + top_n_tokens = tokenizer.convert_ids_to_tokens(top_n_indices.tolist()) + top_n_probs_percent = [prob * 100 for prob in top_n_probs.tolist()] + + # Create a dictionary for the bar chart data + data = {"Token": top_n_tokens, "Probability (%)": top_n_probs_percent} + + # Create a DataFrame for the table + top_n_df = pd.DataFrame(data) + + st.write("Top N predictions for [MASK]:") + st.bar_chart(top_n_df.set_index("Token")) # Display bar chart! diff --git a/examples/gui/pages/llama3_1.py b/examples/gui/pages/llama3_1.py new file mode 100644 index 0000000000..b467bc7792 --- /dev/null +++ b/examples/gui/pages/llama3_1.py @@ -0,0 +1,206 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +import asyncio +import os +import time +from pathlib import Path + +import streamlit as st +import torch +from max.driver import CPU, Accelerator +from max.pipelines import ( + PIPELINE_REGISTRY, + PipelineConfig, + SupportedEncoding, +) +from max.pipelines.architectures.llama3.config import get_llama_huggingface_file +from shared import ( + RAG_PROMPT, + RAG_SYSTEM_PROMPT, + hf_streamlit_download, + load_embed_docs, + menu, + stream_output, +) + +st.set_page_config(page_title="Llama3.1", page_icon="🦙") + +""" +# Llama3.1 🦙 + +Compile and cache Llama3.1 built with MAX graphs so you can continuously +chat with it. + +Tick `Activate RAG` on the sidebar to augment your prompts with +text from documents in the `examples/gui/ragdata` folder in format: `.txt` +`.pdf` `.csv` `.docx` `.epub` `.ipynb` `.md` `.html`. +""" + +menu() + + +@st.cache_resource(show_spinner=False) +def start_llama3( + weight_path: str, + quantization: SupportedEncoding, + max_length: int, + max_new_tokens: int, + use_gpu: bool, +) -> Llama3: + config = PipelineConfig( + architecture="LlamaForCausalLM", + device=Accelerator() if use_gpu else CPU(), + weight_path=[Path(weight_path)], + quantization_encoding=quantization, + max_length=max_length, + max_new_tokens=max_new_tokens, + model_path="modularai/Llama-3.1-8B-Instruct-GGUF", + ) + _, pipeline = PIPELINE_REGISTRY.retrieve_factory(config) + return pipeline + + +def messages_to_llama3_prompt(messages: list[dict[str, str]]) -> str: + prompt_string = "<|begin_of_text|>" + for message in messages: + prompt_string += ( + f"<|start_header_id|>{message['role']}<|end_header_id|>\n\n" + ) + prompt_string += f"{message['content']}<|eot_id|>\n" + prompt_string += "<|start_header_id|>assistant<|end_header_id|>" + return prompt_string + + +if torch.cuda.is_available(): + use_gpu = st.sidebar.checkbox( + f"Use GPU: {torch.cuda.get_device_name(0)}", value=True + ) +else: + use_gpu = st.sidebar.checkbox( + "Use GPU (Accelerator not available)", value=False, disabled=True + ) + +if use_gpu: + encoding = st.sidebar.selectbox("Encoding", [SupportedEncoding.bfloat16]) +else: + encoding = st.sidebar.selectbox( + "Encoding", + [ + SupportedEncoding.q4_k, + SupportedEncoding.q4_0, + SupportedEncoding.q6_k, + ], + ) + +max_length = st.sidebar.number_input( + "Max input and output tokens", 0, 128_000, 12_000 +) +max_new_tokens = st.sidebar.number_input("Max output tokens", 0, 24_000, 6000) + +hf_file = get_llama_huggingface_file("3.1", encoding) +weights = hf_streamlit_download(hf_file.repo_id, hf_file.filename) + +button_state = st.empty() +model_state = st.empty() +if button_state.button("Start Llama3", key=0): + model_state.info("Starting Llama3...", icon="️⚙️") + st.session_state["model"] = start_llama3( + weights, + encoding, + max_length, + max_new_tokens, + use_gpu, + ) + model_state.success("Llama3 is ready!", icon="✅") + +rag = st.sidebar.checkbox("Activate RAG", value=False) + +if rag: + system_prompt = st.sidebar.text_area( + "System Prompt", + value=RAG_SYSTEM_PROMPT, + ) + n_result = st.sidebar.slider( + "Number of Top Embedding Search Results", 1, 7, 5 + ) + rag_directory = st.sidebar.text_input( + "RAG Directory", + value=Path(__file__).parent.parent / "ragdata", + ) + filenames = [ + f + for f in os.listdir(rag_directory) + if os.path.isfile(os.path.join(rag_directory, f)) + ] + # Re-cache reading the documents again if there's a change + collection, embedding_model = load_embed_docs(filenames) + st.success("RAG data is indexed", icon="✅") +else: + system_prompt = st.sidebar.text_area( + "System Prompt", + value="You are a helpful coding assistant named MAX Llama3.", + ) + +# Initialize chat history +if "messages" not in st.session_state: + st.session_state.messages = [] + +# Display chat messages from history on app rerun +for message in st.session_state.messages: + with st.chat_message(message["role"], avatar=message["avatar"]): + st.markdown(message["content"]) + + +disable_chat = True if "model" not in st.session_state else False + +if prompt := st.chat_input("Send a message to llama3", disabled=disable_chat): + messages = [{"role": "system", "content": system_prompt}] + messages += [ + {"role": m["role"], "content": m["content"]} + for m in st.session_state.messages + ] + if rag: + query_embedding = list(embedding_model.embed(prompt))[0].tolist() + ret = collection.query(query_embedding, n_results=n_result) + data = [] + if ret["documents"] is not None and ret["metadatas"] is not None: + for i, (doc, metadata) in enumerate( + zip(ret["documents"], ret["metadatas"]) + ): + data.append(("\n\n".join(doc), metadata[0]["file_name"])) + messages.append( + { + "role": "user", + "content": RAG_PROMPT.format(query=prompt, data=data), + } + ) + else: + messages.append({"role": "user", "content": prompt}) + + with st.chat_message("user", avatar="💬"): + st.markdown(prompt) + + prompt_string = messages_to_llama3_prompt(messages) + + # Sleep short time so prior messages refresh and don't go dark + time.sleep(0.1) + + with st.chat_message("assistant", avatar="🦙"): + response = asyncio.run( + stream_output(st.session_state["model"], prompt_string) + ) + + st.session_state.messages += [ + {"role": "user", "avatar": "💬", "content": prompt}, + {"role": "assistant", "avatar": "🦙", "content": response}, + ] diff --git a/examples/gui/pages/stable-diffusion.py b/examples/gui/pages/stable-diffusion.py new file mode 100644 index 0000000000..efb787cf5a --- /dev/null +++ b/examples/gui/pages/stable-diffusion.py @@ -0,0 +1,136 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import time +from pathlib import Path + +import numpy as np +import streamlit as st +from diffusers.schedulers.scheduling_pndm import PNDMScheduler +from max.engine import InferenceSession +from PIL import Image +from shared import hf_streamlit_download, menu +from transformers.models.clip.tokenization_clip import CLIPTokenizer + +st.set_page_config("Stable Diffusion 1.5", page_icon="🎨") + +menu() + +"""# 🎨 Stable Diffusion 1.5""" + + +@st.cache_data +def load_tokenizer(path): + return CLIPTokenizer.from_pretrained(path) + + +num_steps = st.sidebar.number_input("Number of steps", 1, 100, 15) +seed = st.sidebar.number_input("Seed", 0, 255) +guidance_scale_factor = st.sidebar.number_input( + "Guidance Scale Factor", 0.0, 10.0, 7.5 +) +latent_scale_factor = st.sidebar.number_input( + "Latent Scale Factor", 0.0, 1.0, 0.18215 +) +output_height = st.sidebar.number_input("Output Height", 0, 2048, 512) +output_width = st.sidebar.number_input("Output Width", 0, 2048, 512) +latent_width = output_width // 8 +latent_height = output_height // 8 +latent_channels = 4 + +model_dir = Path(hf_streamlit_download("modularai/stable-diffusion-1.5-onnx")) + +text_encoder_path = model_dir / "text_encoder" / "model.onnx" +img_decoder_path = model_dir / "vae_decoder" / "model.onnx" +img_diffuser_path = model_dir / "unet" / "model.onnx" +scheduler_path = model_dir / "scheduler" / "scheduler_config.json" +tokenizer_path = model_dir / "tokenizer" + +prompt = st.text_input("Prompt", "A puppy playing the drums") +negative_prompt = st.text_input("Negative Prompt", "No overlapping geometry") + +if seed > 0: + np.random.seed(seed) + +if st.button("Generate Image"): + with st.spinner("Compiling models, faster after first run..."): + # Need a small delay so the spinner starts correctly + time.sleep(1) + session = InferenceSession() + txt_encoder = session.load(text_encoder_path) + img_decoder = session.load(img_decoder_path) + img_diffuser = session.load(img_diffuser_path) + + with st.spinner("Processing Input"): + tokenizer = load_tokenizer(tokenizer_path) + prompt_p = tokenizer( + prompt, padding="max_length", max_length=tokenizer.model_max_length + ) + prompt_n = tokenizer( + negative_prompt, + padding="max_length", + max_length=tokenizer.model_max_length, + ) + input_ids = np.stack((prompt_p.input_ids, prompt_n.input_ids)).astype( + np.int32 + ) + encoder_hidden_states = txt_encoder.execute_legacy(input_ids=input_ids)[ + "last_hidden_state" + ] + + with st.spinner("Initializing Latent"): + scheduler = PNDMScheduler.from_pretrained(scheduler_path) + + # Note: For onnx, shapes are given in NCHW format. + latent = np.random.normal( + size=(1, latent_channels, latent_height, latent_width) + ) + latent = latent * scheduler.init_noise_sigma + latent = latent.astype(np.float32) + + # Loop through diffusion model. + scheduler.set_timesteps(num_steps) + progress_bar = st.progress(0.0, "Step 1/25") + for i, t in enumerate(scheduler.timesteps): + progress_bar.progress(i / num_steps, f"Step {i}/{num_steps}") + if i == num_steps: + progress_bar.progress(1.0, "Complete!") + + # Duplicate input and scale based on scheduler. + sample = np.vstack((latent, latent)) + sample = scheduler.scale_model_input(sample, timestep=t) + + # Execute the diffusion model with bs=2. Both batches have same primary input and + # timestep, but the encoder_hidden_states (primary prompt vs negative) differs. + noise_pred = img_diffuser.execute_legacy( + sample=sample, + encoder_hidden_states=encoder_hidden_states, + timestep=np.array([t], dtype=np.int64), + )["out_sample"] + + # Merge conditioned & unconditioned outputs. + noise_pred_text, noise_pred_uncond = np.split(noise_pred, 2) + noise_pred = noise_pred_uncond + guidance_scale_factor * ( + noise_pred_text - noise_pred_uncond + ) + + # Merge latent with previous iteration. + latent = scheduler.step(noise_pred, t, latent).prev_sample + + # Decode finalized latent. + with st.spinner("Decoding Image"): + latent = latent * (1 / latent_scale_factor) + decoded = img_decoder.execute_legacy(latent_sample=latent)["sample"] + image = np.clip(decoded / 2 + 0.5, 0, 1).squeeze() + image = (image.transpose(1, 2, 0) * 255).astype(np.uint8) + st.image(Image.fromarray(image, "RGB")) diff --git a/examples/gui/pages/yolo.py b/examples/gui/pages/yolo.py new file mode 100644 index 0000000000..11e2a2dde4 --- /dev/null +++ b/examples/gui/pages/yolo.py @@ -0,0 +1,178 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import time +from pathlib import Path + +import cv2 +import numpy as np +import streamlit as st +import torch +from max import engine +from shared import menu, modular_cache_dir +from ultralytics import YOLO +from ultralytics.engine.results import Results +from ultralytics.models.yolo.segment.predict import ops + +st.set_page_config("YOLO", page_icon="🔍") +menu() + +""" +# 🔍 YOLO Segmentation + +Segment objects using your webcam. This downloads and converts YOLOv8n to +ONNX, then compiles it with MAX for faster inference! +""" + +# First do a quick check to see if a webcam is available +capture = cv2.VideoCapture(cv2.CAP_ANY) +if capture.isOpened(): + capture.release() +else: + st.error("This example is only available on a local machine with a webcam") + exit() + + +@st.cache_data(show_spinner="Downloading YOLO and exporting to ONNX") +def download_and_export_yolo(model_path, height, width): + model = YOLO(model_path) + model.export(format="onnx", imgsz=(height, width), simplify=True) + return model.names + + +@st.cache_resource(show_spinner="Starting MAX Inference Session") +def max_yolo_session(onnx_path): + # Have to sleep for a short time for the spinner to start correctly + time.sleep(1) + session = engine.InferenceSession() + return session.load(onnx_path) + + +def resize_and_pad(image, shape): + # Grab shape sizes. + (h, w, _) = image.shape + (target_h, target_w) = shape + + # Resize to fully fit within `shape`. + min_ratio = min(target_h / h, target_w / w) + unpadded_h = int(round(min_ratio * h)) + unpadded_w = int(round(min_ratio * w)) + image = cv2.resize( + image, (unpadded_w, unpadded_h), interpolation=cv2.INTER_LINEAR + ) + + # Pad to be the same size as `shape`. + delta_h = (target_h - unpadded_h) / 2 + delta_w = (target_w - unpadded_w) / 2 + top, bottom = int(round(delta_h - 0.1)), int(round(delta_h + 0.1)) + left, right = int(round(delta_w - 0.1)), int(round(delta_w + 0.1)) + return cv2.copyMakeBorder( + image, + top, + bottom, + left, + right, + cv2.BORDER_CONSTANT, + value=(114, 114, 114), + ) + + +def postprocess(out0, out1, input, frame, class_names): + out0 = torch.from_numpy(out0) + out1 = torch.from_numpy(out1) + + pred = ops.non_max_suppression( + out0, + conf_thres=0.25, + iou_thres=0.70, + agnostic=False, + max_det=10, + nc=len(class_names), + classes=None, + )[0] + + if not len(pred): + result = Results( + orig_img=frame, + path="", + names=class_names, + boxes=pred[:, :6], + ) + else: + masks = ops.process_mask( + out1[0], + pred[:, 6:], + pred[:, :4], + input.shape[2:], + upsample=True, + ) # HWC + pred[:, :4] = ops.scale_boxes(input.shape[2:], pred[:, :4], frame.shape) + result = Results( + orig_img=frame, + path="", + names=class_names, + boxes=pred[:, :6], + masks=masks, + ) + return result + + +model_path = st.sidebar.text_input( + "Model Path", + os.path.join(modular_cache_dir(), "yolov8n-seg.pt"), +) +onnx_path = Path(os.path.dirname(model_path)) / "yolov8n-seg.onnx" +width = st.sidebar.number_input("Image Width", 64, 2048, 640) +height = st.sidebar.number_input("Image Height", 64, 2048, 480) + +class_names = download_and_export_yolo(model_path, height, width) +yolo = max_yolo_session(onnx_path) + +previous_elapsed_ms = [] + +frame_window = st.image([]) +camera = cv2.VideoCapture(0) + +button_placeholder = st.empty() +if button_placeholder.button("Start Webcam"): + button_placeholder.empty() + while True: + _, img = camera.read() + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) + img = resize_and_pad(img, (height, width)) + # Preprocess inputs. + input = ( + img[np.newaxis, :, :, ::-1].transpose(0, 3, 1, 2).astype(np.float32) + / 255 + ).copy() + start = time.time() + outputs = list(yolo.execute_legacy(images=input).values()) + elapsed_ms = (time.time() - start) * 1000 + result = postprocess(outputs[0], outputs[1], input, img, class_names) + img = result.plot() + # Calculated average fps and update window title. + # global previous_elapsed_ms + previous_elapsed_ms.append(elapsed_ms) + previous_elapsed_ms = previous_elapsed_ms[-100:] + fps = 1000.0 / np.average(previous_elapsed_ms) + img = cv2.putText( + img, + f"FPS: {int(fps)}", + org=(50, 50), + fontFace=cv2.FONT_HERSHEY_COMPLEX, + fontScale=1, + color=(255, 0, 0), + thickness=2, + ) + frame_window.image(img) diff --git a/examples/gui/ragdata/mojo_functions.txt b/examples/gui/ragdata/mojo_functions.txt new file mode 100644 index 0000000000..f053dcb669 --- /dev/null +++ b/examples/gui/ragdata/mojo_functions.txt @@ -0,0 +1,28 @@ +# Mojo Functions + +Mojo functions can be declared with either fn or def. + +The fn declaration enforces type-checking and memory-safe behaviors (Rust style), while def allows no type declarations and dynamic behaviors (Python style). + +For example, this def function doesn't require declaration of argument types or the return type: + +```mojo +def greet(name): + return "Hello, " + name + "!" +``` + +While the same thing as an fn function requires that you specify the argument type and the return type like this: + +```mojo +fn greet2(name: String) -> String: + return "Hello, " + name + "!" +``` + +Both functions have the same result, but the fn function provides compile-time checks to ensure the function receives and returns the correct types. Whereas, the def function might fail at runtime if it receives the wrong type. + +Currently, Mojo doesn't support top-level code in a .mojo (or .🔥) file, so every program must include a function named main() as the entry point. You can declare it with either def or fn: + +```mojo +def main(): + print("Hello, world!") +``` diff --git a/examples/gui/shared.py b/examples/gui/shared.py new file mode 100644 index 0000000000..0f3bca2c3e --- /dev/null +++ b/examples/gui/shared.py @@ -0,0 +1,282 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import threading +import time +from functools import wraps +from pathlib import Path +from typing import List + +import chromadb +import streamlit as st +from chromadb.config import Settings +from fastembed import TextEmbedding +from gguf import Union +from huggingface_hub import hf_hub_download, snapshot_download +from llama_index.core import SimpleDirectoryReader +from max.pipelines import TokenGenerator +from streamlit.runtime.scriptrunner import ( + add_script_run_ctx, + get_script_run_ctx, +) +from tqdm.auto import tqdm + +RAG_SYSTEM_PROMPT = """You are a helpful document search assistant. +Your task is to find an answer to user's query about their given documentation. +DO NOT HALLUCINATE.""" + +RAG_PROMPT = """Answer the users query: {query} using the provided context: {data}. +If you don't have an answer say 'I don't know!' +Make sure to include the filename of any document you use to answer the query. + +## GO""" + + +def menu(): + st.sidebar.page_link("home.py", label="️Home", icon="⚡️") + st.sidebar.page_link("pages/llama3_1.py", label="Llama3.1", icon="🦙") + st.sidebar.page_link("pages/bert.py", label="Bert", icon="👓") + st.sidebar.page_link("pages/yolo.py", label="YOLO", icon="🔍") + st.sidebar.page_link( + "pages/stable-diffusion.py", label="Stable Diffusion 1.5", icon="🎨" + ) + + +def modular_cache_dir() -> str: + cache_folder = os.getenv("XDG_CACHE_PATH", str(Path.home() / ".cache")) + modular_dir = os.path.join(cache_folder, "modular") + os.makedirs(modular_dir, exist_ok=True) + return modular_dir + + +def format_time(seconds): + """Return a pretty format based on how much time is left.""" + hours, remainder = divmod(seconds, 3600) + minutes, seconds = divmod(remainder, 60) + if hours > 0: + return f"{int(hours)}h {int(minutes)}m {int(seconds)}s" + elif minutes > 0: + return f"{int(minutes)}m {int(seconds)}s" + else: + return f"{int(seconds)}s" + + +tqdm_patched = False + + +def hf_streamlit_download(repo_id: str, filename: str = "") -> str: + """Patch tqdm to update st.progress bars, uses `hf_hub_download` if + a `repo_id` and `filename` is provided, otherwise uses `snapshot_download`. + """ + global tqdm_patched + if not tqdm_patched: + tqdm_patched = True + patch_tqdm() + + if filename: + return hf_hub_download(repo_id, filename) + + return snapshot_download(repo_id) + + +# TODO: raise patch to `huggingface_hub` to see if they'd be interested in this +# as a class that inherits from tqdm, which can be installed with +# huggingface_hub[streamlit] +def patch_tqdm(): + """Monkey patches tqdm to update st.progress bars. `hf_hub_download` and + `snapshot_download` use tqdm, so this is a way to hook into the progress + of each file download and display it on the GUI. We need to pass the + script context so other threads can communicate with the main thread, + when interacting with streamlit elements.""" + progress_bars = {} + ctx = get_script_run_ctx() + + def patch_update(original): + @wraps(original) + def wrapper(self, n=1): + # Return early if tqdm instance is describing how many files + # will be downloaded. + if self.desc.startswith("Fetching"): + return + + if self.n is not None and self.total is not None: + # Convert everything to MB + downloaded = self.n / 1024 / 1024 + total = self.total / 1024 / 1024 + speed = ( + self.format_dict["rate"] / 1024 / 1024 + if self.format_dict["rate"] + else 0.0 + ) + if speed != 0: + time_left = format_time((total - downloaded) / speed) + else: + time_left = "N/A" + # Only create/update progress bar if the download is in progress to skip small files + if time_left != "N/A": + add_script_run_ctx(threading.currentThread(), ctx) + if self.pos not in progress_bars: + progress_bars[self.pos] = st.empty() + progress_bar = progress_bars[self.pos] + status = ( + f"{self.desc}: {int(downloaded)}/{int(total)} MB Speed:" + f" {speed:.2f} MB/s Remaining: {time_left}" + ) + progress_bar.progress(downloaded / total, status) + return original(self, n) + + return wrapper + + def patch_del(original): + @wraps(original) + def wrapper(self, *args, **kwargs): + if self.pos in progress_bars: + progress_bars[self.pos].empty() + del progress_bars[self.pos] + + return original(self, *args, **kwargs) + + return wrapper + + tqdm.update = patch_update(tqdm.update) + tqdm.__del__ = patch_del(tqdm.__del__) + + +@st.cache_resource(show_spinner=False) +def load_embed_docs(docs_filenames: List[str]): + """Loads documents from `./ragdir` and embeds them to chromadb + using a text embedding model. + """ + with st.spinner("Loading RAG data..."): + docs = SimpleDirectoryReader("./ragdata").load_data() + client = chromadb.Client(Settings(anonymized_telemetry=False)) + collection = client.get_or_create_collection( + "max-rag-example", metadata={"hnsw:space": "cosine"} + ) + embedding_model = TextEmbedding() + + for i, doc in enumerate(docs): + embedding = list(embedding_model.embed(doc.text))[0].tolist() + collection.upsert( + documents=doc.text, + embeddings=embedding, + ids=[str(i)], + metadatas=[doc.metadata], + ) + + return collection, embedding_model + + +# Generate metrics for streamlit +class TextGenerationMetrics: + """Metrics capturing and reporting for a text generation pipeline.""" + + prompt_size: int + output_size: int + startup_time: Union[float, str] + time_to_first_token: Union[float, str] + prompt_eval_throughput: Union[float, str] + eval_throughput: Union[float, str] + + _start_time: float + _signposts: dict[str, float] + + def __init__(self): + self.signposts = {} + self.prompt_size = 0 + self.output_size = 0 + self.start_time = time.time() + + def signpost(self, name: str): + """Measure the current time and tag it with a name for later reporting.""" + self.signposts[name] = time.time() + + def new_token(self): + """Report that a new token has been generated.""" + self.output_size += 1 + + def calculate_results(self): + end_generation = time.time() + begin_generation = self.signposts.get("begin_generation") + if begin_generation: + self.startup_time = ( + self.signposts["begin_generation"] - self.start_time + ) * 1000.0 + else: + self.startup_time = "n/a" + + first_token = self.signposts.get("first_token") + if first_token and begin_generation: + self.time_to_first_token = ( + self.signposts["first_token"] + - self.signposts["begin_generation"] + ) * 1000.0 + else: + self.time_to_first_token = "n/a" + + st.sidebar.metric( + "Input/Output Tokens", + value=f"{self.prompt_size}/{self.output_size}", + ) + st.sidebar.metric( + "Time to first token", value=f"{self.time_to_first_token:.2f} ms" + ) + + if first_token and begin_generation: + generation_time = end_generation - self.signposts["first_token"] + assert isinstance(self.time_to_first_token, float) + self.prompt_eval_throughput = self.prompt_size / ( + self.time_to_first_token / 1000.0 + ) + self.eval_throughput = (self.output_size - 1) / generation_time + st.sidebar.metric( + "Prompt eval throughput (context-encoding):", + value=f"{self.prompt_eval_throughput:.2f} tokens/s", + ) + st.sidebar.metric( + "Eval throughput (token-generation):", + value=f"{self.eval_throughput:.2f} tokens/s", + ) + + +async def stream_output(model: TokenGenerator, prompt: str) -> str: + metrics = TextGenerationMetrics() + context = model.new_context(prompt) + prompt_size = context.current_length + + response_display = st.empty() + response_str = "" + + if metrics: + metrics.prompt_size = prompt_size + metrics.signpost("begin_generation") + + is_first_token = True + request_id = str(id(prompt)) + while True: + response = model.next_token({request_id: context}, num_steps=1)[0] + if request_id not in response: + break + response_str += response[request_id] + response_display.markdown(response_str) + if metrics: + if is_first_token: + is_first_token = False + metrics.signpost("first_token") + metrics.new_token() + if metrics: + metrics.signpost("end_generation") + + metrics.calculate_results() + return response_str diff --git a/examples/inference/README.md b/examples/inference/README.md new file mode 100644 index 0000000000..7903926872 --- /dev/null +++ b/examples/inference/README.md @@ -0,0 +1,18 @@ +# PyTorch and ONNX inference in MAX + +MAX can accelerate the inference of existing PyTorch or ONNX models. These +examples show several common PyTorch or ONNX models running in MAX through the +Mojo, Python, and C APIs: + +## PyTorch (via TorchScript) + +- BERT, [with the Mojo API](./bert-mojo-torchscript/), +[with the Python API](./bert-python-torchscript/), +and [with the C API](./bert-c-torchscript/) +- [ResNet50 with the Python API](./resnet50-python-torchscript/) + +## ONNX + +- Stable Diffusion, [with the Mojo API](./stable-diffusion-mojo-onnx/) and +[with the Python API](./stable-diffusion-python-onnx/) +- [YOLOv8 with the Python API](./yolo-python-onnx/) diff --git a/examples/inference/bert-c-torchscript/.gitignore b/examples/inference/bert-c-torchscript/.gitignore new file mode 100644 index 0000000000..2f2295c1a6 --- /dev/null +++ b/examples/inference/bert-c-torchscript/.gitignore @@ -0,0 +1,7 @@ +# Binaries generated +inputs +outputs.bin + +# Don't check in / version control the downloaded model +*.pt +*.torchscript diff --git a/examples/inference/bert-c-torchscript/CMakeLists.txt b/examples/inference/bert-c-torchscript/CMakeLists.txt new file mode 100644 index 0000000000..650f7040be --- /dev/null +++ b/examples/inference/bert-c-torchscript/CMakeLists.txt @@ -0,0 +1,22 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +cmake_minimum_required(VERSION 3.24) + +project(max-examples LANGUAGES C) + +list(APPEND CMAKE_MODULE_PATH "$ENV{MAX_PKG_DIR}/lib/cmake") +include(AddMaxEngine) + +add_executable(bert main.c) +target_link_libraries(bert PUBLIC max-engine) diff --git a/examples/inference/bert-c-torchscript/README.md b/examples/inference/bert-c-torchscript/README.md new file mode 100644 index 0000000000..f7d6f9d490 --- /dev/null +++ b/examples/inference/bert-c-torchscript/README.md @@ -0,0 +1,69 @@ +# TorchScript BERT inference with C + +This directory includes scripts used to run simple BERT inference via the MAX +Engine C API to predict the sentiment of the given text. + +## Quickstart + +For this example, you need a cmake installed on your system and a C compiler. + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Scripts included + +- `pre-process.py`: Prepares an example input and saves the pre-processed input +to a local directory, for use use in the `main.c` program. Example: + + ```sh + python3 pre-process.py --text "Paris is the [MASK] of France." + ``` + +- `post-process.py`: Loads the generated output, post-processes it, and outputs +the prediction. Example: + + ```sh + python3 post-process.py + ``` + +## Building the example + +This example uses CMake. To build the executable, please use the following +commands: + +```sh +export MAX_PKG_DIR=`modular config max.path` +cmake -B build -S . +cmake --build build +``` + +The executable is called `bert` and will be present in the build directory. + +## Usage + +```sh +python3 ../common/bert-torchscript/download-model.py +python3 pre-process.py --text "Your text" +./build/bert ../../models/bert.torchscript +python3 post-process.py +``` diff --git a/examples/inference/bert-c-torchscript/environment.yml b/examples/inference/bert-c-torchscript/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/bert-c-torchscript/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/bert-c-torchscript/magic.lock b/examples/inference/bert-c-torchscript/magic.lock new file mode 100644 index 0000000000..5362cc4f1e --- /dev/null +++ b/examples/inference/bert-c-torchscript/magic.lock @@ -0,0 +1,7455 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.31.6-h74e3db0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.31.6-h0efca9c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.5-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-3.31.6-ha25475f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.31.6-h74e3db0_0.conda + sha256: 82372b404995a92fecfef38e9f1cb4977e71b785a728db5a9ed6f1aec49d547c + md5: d6e0e094315ee3e99ca153663e7fa669 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.12.1,<9.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.5,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20376244 + timestamp: 1740467420604 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.31.6-h0efca9c_0.conda + sha256: fa894bf2306b4db3fde630b66a9c052dfcde7ec9f876e86fc555b86c21c97063 + md5: f3ec9663b69f8ac9315ff08d847a0e00 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.12.1,<9.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.5,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 19859434 + timestamp: 1740467090575 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-3.31.6-ha25475f_0.conda + sha256: d71e84b6b7000323d2a394c3e01cfd35df3421741e8b4af7852e8400c2604574 + md5: 3a3bbf1de0a6d99658f4c1b63ad40d21 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.12.1,<9.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - liblzma >=5.6.4,<6.0a0 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - rhash >=1.4.5,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16507414 + timestamp: 1740467905288 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 418890 + timestamp: 1737016751326 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + sha256: 04677caac29ec64a5d41d0cca8dbec5f60fa166d5458ff5a4393e4dc08a4799e + md5: 9af0e7981755f09c81421946c4bcea04 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 186921 + timestamp: 1728886721623 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.5-h86ecc28_0.conda + sha256: 82f3555c8f4fa76faf111622766457a8d17755bf493c0ac72ee59f4dad71d994 + md5: 93bac703d92dafc337db454e6e93a520 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 201958 + timestamp: 1728886717057 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda + sha256: e6a3e9dbfcb5ad5d69a20c8ac237d37a282a95983314a28912fc54208c5db391 + md5: 352b210f81798ae1e2f25a98ef4b3b54 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 177240 + timestamp: 1728886815751 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_0.conda + sha256: 8cd972048f297b8e0601158ce352f5ca9510dda9f2706a46560220aa58b9f038 + md5: 92cdb6fe54b78739ad70637e4f0deb07 + depends: + - brotli-python >=1.0.9 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.8 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 95016 + timestamp: 1718653149133 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da + md5: 02e4e2fa41a6528afba2e54cbc4280ff + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 567419 + timestamp: 1740255350233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + sha256: a8e9a9e19ec3778594d9746e308cdba096f3019c0c0a62f552d0d299b35c343f + md5: d98196f3502425e14f82bdfc8eb4ae27 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 550364 + timestamp: 1740255370714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 + md5: 66e5c4b02aa97230459efdd4f64c8ce6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 399981 + timestamp: 1740255382232 diff --git a/examples/inference/bert-c-torchscript/main.c b/examples/inference/bert-c-torchscript/main.c new file mode 100644 index 0000000000..5c277174bc --- /dev/null +++ b/examples/inference/bert-c-torchscript/main.c @@ -0,0 +1,222 @@ +/******************************************************************************* + * Copyright (c) 2025, Modular Inc. All rights reserved. + * + * Licensed under the Apache License v2.0 with LLVM Exceptions: + * https://llvm.org/LICENSE.txt + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *******************************************************************************/ + +#include "max/c/common.h" +#include "max/c/context.h" +#include "max/c/model.h" +#include "max/c/pytorch/config.h" +#include "max/c/tensor.h" +#include "max/c/value.h" + +#include +#include +#include + +void logHelper(const char *level, const char *message, const char delimiter) { + printf("%s: %s%c", level, message, delimiter); +} +void logDebug(const char *message) { logHelper("DEBUG", message, ' '); } +void logInfo(const char *message) { logHelper("INFO", message, '\n'); } +void logError(const char *message) { logHelper("ERROR", message, '\n'); } + +#define CHECK(x) \ + if (M_isError(x)) { \ + logError(M_getError(x)); \ + return EXIT_FAILURE; \ + } + +// Read file at the given path. On failure abort. +char *readFileOrExit(const char *filepath) { + FILE *file; + file = fopen(filepath, "rb"); + if (!file) { + printf("failed to open %s. Aborting.\n", filepath); + abort(); + } + fseek(file, 0, SEEK_END); + long fileSize = ftell(file); + rewind(file); + + char *buffer = (char *)malloc(fileSize * sizeof(char)); + size_t count = fread(buffer, fileSize, 1, file); + if (count != 1) { + printf("failed to read %s. Aborting.\n", filepath); + abort(); + } + fclose(file); + return buffer; +} + +int main(int argc, char **argv) { + if (argc != 2) { + printf("Usage: bert "); + return EXIT_FAILURE; + } + + M_Status *status = M_newStatus(); + + M_RuntimeConfig *runtimeConfig = M_newRuntimeConfig(); + M_RuntimeContext *context = M_newRuntimeContext(runtimeConfig, status); + CHECK(status); + + logInfo("Compiling Model"); + M_CompileConfig *compileConfig = M_newCompileConfig(); + const char *modelPath = argv[1]; + M_setModelPath(compileConfig, /*path=*/modelPath); + + logInfo("Setting InputSpecs for compilation"); + int64_t *inputIdsShape = + (int64_t *)readFileOrExit("inputs/input_ids_shape.bin"); + M_TorchInputSpec *inputIdsInputSpec = + M_newTorchInputSpec(inputIdsShape, /*dimNames=*/NULL, /*rankSize=*/2, + /*type=*/M_INT32, /*device=*/"", status); + CHECK(status); + + int64_t *attentionMaskShape = + (int64_t *)readFileOrExit("inputs/attention_mask_shape.bin"); + M_TorchInputSpec *attentionMaskInputSpec = + M_newTorchInputSpec(attentionMaskShape, /*dimNames=*/NULL, /*rankSize=*/2, + /*type=*/M_INT32, /*device=*/"", status); + CHECK(status); + + int64_t *tokenTypeIdsShape = + (int64_t *)readFileOrExit("inputs/token_type_ids_shape.bin"); + M_TorchInputSpec *tokenTypeIdsInputSpec = + M_newTorchInputSpec(tokenTypeIdsShape, /*dimNames=*/NULL, /*rankSize=*/2, + /*type=*/M_INT32, /*device=*/"", status); + CHECK(status); + + M_TorchInputSpec *inputSpecs[3] = {inputIdsInputSpec, attentionMaskInputSpec, + tokenTypeIdsInputSpec}; + M_setTorchInputSpecs(compileConfig, inputSpecs, 3); + + M_AsyncCompiledModel *compiledModel = + M_compileModel(context, &compileConfig, status); + CHECK(status); + + logInfo("Initializing Model"); + M_AsyncModel *model = + M_initModel(context, compiledModel, /*weightsRegistry=*/NULL, status); + CHECK(status); + + logInfo("Waiting for model compilation to finish"); + M_waitForModel(model, status); + CHECK(status); + + logInfo("Inspecting model metadata"); + size_t numInputs = M_getNumModelInputs(compiledModel, status); + CHECK(status); + printf("Num inputs: %ld\n", numInputs); + + M_TensorNameArray *tensorNames = M_getInputNames(compiledModel, status); + CHECK(status); + logDebug("Model input names:"); + for (size_t i = 0; i < numInputs; i++) { + const char *tensorName = M_getTensorNameAt(tensorNames, i); + printf("%s ", tensorName); + } + printf("\n"); + + logInfo("Preparing inputs..."); + M_AsyncTensorMap *inputToModel = M_newAsyncTensorMap(context); + + M_TensorSpec *inputIdsSpec = + M_newTensorSpec(inputIdsShape, /*rankSize=*/2, /*dtype=*/M_INT32, + /*tensorName=*/"input_ids"); + int32_t *inputIdsTensor = (int32_t *)readFileOrExit("inputs/input_ids.bin"); + M_borrowTensorInto(inputToModel, inputIdsTensor, inputIdsSpec, status); + CHECK(status); + + M_TensorSpec *attentionMaskSpec = + M_newTensorSpec(attentionMaskShape, /*rankSize=*/2, /*dtype=*/M_INT32, + /*tensorName=*/"attention_mask"); + int32_t *attentionMaskTensor = + (int32_t *)readFileOrExit("inputs/attention_mask.bin"); + M_borrowTensorInto(inputToModel, attentionMaskTensor, attentionMaskSpec, + status); + CHECK(status); + + M_TensorSpec *tokenTypeIdsSpec = + M_newTensorSpec(tokenTypeIdsShape, /*rankSize=*/2, /*dtype=*/M_INT32, + /*tensorName=*/"token_type_ids"); + int32_t *tokenTypeIdsTensor = + (int32_t *)readFileOrExit("inputs/token_type_ids.bin"); + M_borrowTensorInto(inputToModel, tokenTypeIdsTensor, tokenTypeIdsSpec, + status); + CHECK(status); + + logInfo("Running Inference..."); + M_AsyncTensorMap *outputs = + M_executeModelSync(context, model, inputToModel, status); + CHECK(status); + + M_AsyncValue *resultValue = + M_getValueByNameFrom(outputs, /*tensorName=*/"result0", status); + CHECK(status); + + logInfo("Extracting output values"); + // Convert the value we found to a tensor and save it to disk. + M_AsyncTensor *result = M_getTensorFromValue(resultValue); + size_t numElements = M_getTensorNumElements(result); + printf("Tensor size: %ld\n", numElements); + M_Dtype dtype = M_getTensorType(result); + const char *outputFilePath = "outputs.bin"; + FILE *file = fopen(outputFilePath, "wb"); + if (!file) { + printf("failed to open %s. Aborting.\n", outputFilePath); + return EXIT_FAILURE; + } + fwrite(M_getTensorData(result), M_sizeOf(dtype), numElements, file); + fclose(file); + + // free memory buffers + free(tokenTypeIdsTensor); + free(attentionMaskTensor); + free(inputIdsTensor); + + free(tokenTypeIdsShape); + free(attentionMaskShape); + free(inputIdsShape); + + // free resources + M_freeTensor(result); + + M_freeValue(resultValue); + + M_freeAsyncTensorMap(outputs); + + M_freeTensorSpec(tokenTypeIdsSpec); + M_freeTensorSpec(attentionMaskSpec); + M_freeTensorSpec(inputIdsSpec); + + M_freeAsyncTensorMap(inputToModel); + + M_freeTensorNameArray(tensorNames); + + M_freeModel(model); + + M_freeCompileConfig(compileConfig); + M_freeCompiledModel(compiledModel); + + M_freeTorchInputSpec(tokenTypeIdsInputSpec); + M_freeTorchInputSpec(attentionMaskInputSpec); + M_freeTorchInputSpec(inputIdsInputSpec); + + M_freeCompileConfig(compileConfig); + M_freeRuntimeContext(context); + + M_freeStatus(status); + + logInfo("Inference successfully completed"); + return EXIT_SUCCESS; +} diff --git a/examples/inference/bert-c-torchscript/pixi.toml b/examples/inference/bert-c-torchscript/pixi.toml new file mode 100644 index 0000000000..eae282bdfe --- /dev/null +++ b/examples/inference/bert-c-torchscript/pixi.toml @@ -0,0 +1,25 @@ +[project] +name = "BERT C Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +numpy = "<2.0" +cmake = ">=3.24" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/bert-c-torchscript/post-process.py b/examples/inference/bert-c-torchscript/post-process.py new file mode 100644 index 0000000000..b5f683dd70 --- /dev/null +++ b/examples/inference/bert-c-torchscript/post-process.py @@ -0,0 +1,29 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import numpy as np +import torch + + +def post_process(): + logits = torch.from_numpy(np.fromfile("outputs.bin", dtype=np.float32)) + predictions = torch.argmax(logits, dim=-1) + + predicted_label = predictions.item() + sentiment_labels = {0: "Negative", 1: "Positive"} + print(f"Predicted sentiment: {sentiment_labels[predicted_label]}") + + +if __name__ == "__main__": + torch.set_default_device("cpu") + post_process() diff --git a/examples/inference/bert-c-torchscript/pre-process.py b/examples/inference/bert-c-torchscript/pre-process.py new file mode 100644 index 0000000000..bc1d55b322 --- /dev/null +++ b/examples/inference/bert-c-torchscript/pre-process.py @@ -0,0 +1,63 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +#!/usr/bin/env python3 + +from argparse import ArgumentParser +from pathlib import Path + +import numpy as np +from transformers import BertTokenizer + +HF_MODEL_NAME = "bert-base-uncased" + + +def main(): + parser = ArgumentParser(description="Preprocessing for BERT inputs") + parser.add_argument( + "--text", + type=str, + metavar="", + required=True, + help="Statement to classify.", + ) + + args = parser.parse_args() + + print("Generating input tensors...") + print(f'Input sentence: "{args.text}".') + + tokenizer = BertTokenizer.from_pretrained(HF_MODEL_NAME) + encoded_inputs = tokenizer(args.text, return_tensors="pt") + + print("Saving inputs to disk...") + input_dir = Path("inputs") + input_dir.mkdir(exist_ok=True) + + created_files = [] + for name, value in encoded_inputs.items(): + value = value.numpy().astype(np.int32) + filename = input_dir / name + filename = filename.with_suffix(".bin") + filename.unlink(missing_ok=True) + value.tofile(filename) + + shape = np.array(value.shape).astype(np.int64) + shape_file = input_dir / f"{name}_shape.bin" + shape.tofile(shape_file) + created_files += [str(filename), str(shape_file)] + print("Inputs saved.") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/bert-c-torchscript/run.sh b/examples/inference/bert-c-torchscript/run.sh new file mode 100755 index 0000000000..046b914abb --- /dev/null +++ b/examples/inference/bert-c-torchscript/run.sh @@ -0,0 +1,50 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -e + +CURRENT_DIR=$(dirname "$0") +# Make sure we're running from inside the directory containing this file. +cd "$CURRENT_DIR" + +# remove the build artifacts +rm -rf build + +if [[ -n "$CONDA_PREFIX" ]]; then + # Required for the CMake build + MAX_PKG_DIR="${MAX_PKG_DIR:-$CONDA_PREFIX}" +else + echo "This script should be run with Conda. Try \`magic run run.sh\`." && false +fi + +export MAX_PKG_DIR + +MODEL_PATH="$CURRENT_DIR/../../models/bert.torchscript" + +# Example input for the model +INPUT_EXAMPLE="My dog is cute." + +# Download model from HuggingFace +python3 "$CURRENT_DIR/../common/bert-torchscript/download-model.py" -o "$MODEL_PATH" +python3 "$CURRENT_DIR/pre-process.py" --text "$INPUT_EXAMPLE" + +# Build the example +cmake -B build -S "$CURRENT_DIR" +cmake --build build + +# Run example +./build/bert "$MODEL_PATH" + +# Post process +python3 "$CURRENT_DIR/post-process.py" diff --git a/examples/inference/bert-mojo-torchscript/README.md b/examples/inference/bert-mojo-torchscript/README.md new file mode 100644 index 0000000000..436c1fdcf2 --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/README.md @@ -0,0 +1,30 @@ +# TorchScript BERT inference with Mojo + +This directory includes scripts used to run simple BERT inference via the [MAX +Engine Mojo API](https://docs.modular.com/max/api/mojo/engine/) to +predict the masked words in a sentence. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` diff --git a/examples/inference/bert-mojo-torchscript/environment.yml b/examples/inference/bert-mojo-torchscript/environment.yml new file mode 100644 index 0000000000..b600eef8fc --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/environment.yml @@ -0,0 +1,9 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge + - defaults +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/bert-mojo-torchscript/magic.lock b/examples/inference/bert-mojo-torchscript/magic.lock new file mode 100644 index 0000000000..e822223a82 --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/magic.lock @@ -0,0 +1,7480 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/bert-mojo-torchscript/pixi.toml b/examples/inference/bert-mojo-torchscript/pixi.toml new file mode 100644 index 0000000000..a5c8b581f9 --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/pixi.toml @@ -0,0 +1,24 @@ +[project] +name = "BERT Mojo Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/bert-mojo-torchscript/run.sh b/examples/inference/bert-mojo-torchscript/run.sh new file mode 100755 index 0000000000..0aa4710039 --- /dev/null +++ b/examples/inference/bert-mojo-torchscript/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -e + +# Example input for the model +INPUT_EXAMPLE="Paris is the [MASK] of France." + +MODEL_PATH="../../models/bert-mlm.torchscript" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Download model from HuggingFace +python3 ../common/bert-torchscript/download-model.py -o "$MODEL_PATH" --mlm + +mojo simple_inference.🔥 "$INPUT_EXAMPLE" diff --git "a/examples/inference/bert-mojo-torchscript/simple_inference.\360\237\224\245" "b/examples/inference/bert-mojo-torchscript/simple_inference.\360\237\224\245" new file mode 100755 index 0000000000..9e9e486c18 --- /dev/null +++ "b/examples/inference/bert-mojo-torchscript/simple_inference.\360\237\224\245" @@ -0,0 +1,127 @@ +#!/usr/bin/env mojo +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.engine import InputSpec, InferenceSession, Model +from pathlib import Path +from python import Python, PythonObject +from max.tensor import Tensor, TensorSpec +import sys + + +def execute(model: Model, text: String, transformers: PythonObject) -> String: + # The model was compiled with a maximum seqlen, so read that out from the model output metadata + output_spec = model.get_model_output_metadata()[0] + max_seqlen = output_spec[1].value() + + tokenizer = transformers.AutoTokenizer.from_pretrained("bert-base-uncased") + + inputs = tokenizer( + text=text, + add_special_tokens=True, + padding="max_length", + truncation=True, + max_length=max_seqlen, + return_tensors="np", + ) + + input_ids = inputs["input_ids"] + token_type_ids = inputs["token_type_ids"] + attention_mask = inputs["attention_mask"] + + outputs = model.execute( + "input_ids", + input_ids, + "token_type_ids", + token_type_ids, + "attention_mask", + attention_mask, + ) + + logits = outputs.get[DType.float32]("result0") + + mask_idx = -1 + for i in range(len(input_ids[0])): + if input_ids[0][i] == tokenizer.mask_token_id: + mask_idx = i + + predicted_token_id = argmax(logits)[mask_idx] + return String( + tokenizer.decode( + predicted_token_id, + skip_special_tokens=True, + clean_up_tokenization_spaces=True, + ) + ) + + +def argmax(t: Tensor) -> List[Int]: + var res = List[Int](capacity=t.dim(1)) + for i in range(t.dim(1)): + var max_val = Scalar[t.type].MIN + var max_idx = 0 + for j in range(t.dim(2)): + if t[0, i, j] > max_val: + max_val = t[0, i, j] + max_idx = j + res.append(max_idx) + return res + + +def load_model(session: InferenceSession) -> Model: + batch = 1 + seqlen = 128 + + input_ids_spec = TensorSpec(DType.int64, batch, seqlen) + token_type_ids_spec = TensorSpec(DType.int64, batch, seqlen) + attention_mask_spec = TensorSpec(DType.int64, batch, seqlen) + input_specs = List[InputSpec]() + + input_specs.append(input_ids_spec) + input_specs.append(attention_mask_spec) + input_specs.append(token_type_ids_spec) + + model = session.load( + Path("../../models/bert-mlm.torchscript"), input_specs=input_specs + ) + + return model + + +def read_input() -> String: + USAGE = ( + 'Usage: ./run.mojo \n\t e.g., ./run.mojo "Paris is the [MASK] of' + ' France"' + ) + + argv = sys.argv() + if len(argv) != 2: + raise Error("\nPlease enter a prompt." + "\n" + USAGE) + + return String(sys.argv()[1]) + + +def main(): + # Import HF Transformers dependency (for the tokenizer) + transformers = Python.import_module("transformers") + + # Read user prompt, create an InferenceSession, and load the model + text = read_input() + session = InferenceSession() + model = load_model(session) + + # Run inference + decoded_result = execute(model, text, transformers) + + print("input text: ", text) + print("filled mask: ", text.replace("[MASK]", decoded_result)) diff --git a/examples/inference/bert-python-torchscript/.gitignore b/examples/inference/bert-python-torchscript/.gitignore new file mode 100644 index 0000000000..2c785ab505 --- /dev/null +++ b/examples/inference/bert-python-torchscript/.gitignore @@ -0,0 +1 @@ +model-repository/ diff --git a/examples/inference/bert-python-torchscript/README.md b/examples/inference/bert-python-torchscript/README.md new file mode 100644 index 0000000000..325e2a64d7 --- /dev/null +++ b/examples/inference/bert-python-torchscript/README.md @@ -0,0 +1,47 @@ +# TorchScript BERT inference with Python + +This directory includes scripts used to run simple BERT inference via the MAX +Engine Python API to predict the masked words in a sentence. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +# Run the MAX Engine example +magic run bash run.sh +# Run the MAX Serving example +magic run bash deploy.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +# Run the MAX Serving example +conda run -n max-repo --live-stream bash deploy.sh +``` + +## Scripts included + +- `simple-inference.py`: Predicts the masked words in the input text using the +MAX Engine Python API. The script prepares an example input, executes the +model, and generates the filled mask. + + You can use the `--text` CLI flag to specify an input sentence. + For example: + + ```sh + python3 simple-inference.py --text "Paris is the [MASK] of France." + ``` diff --git a/examples/inference/bert-python-torchscript/environment.yml b/examples/inference/bert-python-torchscript/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/bert-python-torchscript/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/bert-python-torchscript/magic.lock b/examples/inference/bert-python-torchscript/magic.lock new file mode 100644 index 0000000000..e822223a82 --- /dev/null +++ b/examples/inference/bert-python-torchscript/magic.lock @@ -0,0 +1,7480 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/bert-python-torchscript/pixi.toml b/examples/inference/bert-python-torchscript/pixi.toml new file mode 100644 index 0000000000..49912bf471 --- /dev/null +++ b/examples/inference/bert-python-torchscript/pixi.toml @@ -0,0 +1,24 @@ +[project] +name = "BERT Python Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +numpy = "<2.0" +transformers = ">=4.44.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/bert-python-torchscript/run.sh b/examples/inference/bert-python-torchscript/run.sh new file mode 100755 index 0000000000..6e175dddc0 --- /dev/null +++ b/examples/inference/bert-python-torchscript/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -ex + +# Example input for the model +INPUT_EXAMPLE="Paris is the [MASK] of France." + +MODEL_PATH="../../models/bert-mlm.torchscript" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Download model from HuggingFace +python3 ../common/bert-torchscript/download-model.py -o "$MODEL_PATH" --mlm + +python3 simple-inference.py --text "$INPUT_EXAMPLE" --model-path "$MODEL_PATH" diff --git a/examples/inference/bert-python-torchscript/simple-inference.py b/examples/inference/bert-python-torchscript/simple-inference.py new file mode 100644 index 0000000000..6f69632558 --- /dev/null +++ b/examples/inference/bert-python-torchscript/simple-inference.py @@ -0,0 +1,105 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os +import platform +import signal +from argparse import ArgumentParser + +import torch +from max import engine +from max.dtype import DType +from transformers import BertTokenizer + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +BATCH = 1 +SEQLEN = 128 +DEFAULT_MODEL_PATH = "../../models/bert-mlm.torchscript" +DESCRIPTION = "BERT model" +HF_MODEL_NAME = "bert-base-uncased" + + +def execute(model_path, text, input_dict): + session = engine.InferenceSession() + input_spec_list = [ + engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64) + for tensor in input_dict.values() + ] + model = session.load(model_path, input_specs=input_spec_list) + tokenizer = BertTokenizer.from_pretrained(HF_MODEL_NAME) + print("Processing input...") + inputs = tokenizer( + text, + return_tensors="pt", + padding="max_length", + truncation=True, + max_length=SEQLEN, + ) + print("Input processed.\n") + masked_index = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero( + as_tuple=True + )[1] + outputs = model.execute_legacy(**inputs)["result0"] + logits = torch.from_numpy(outputs[0, masked_index, :]) + predicted_token_id = logits.argmax(dim=-1) + predicted_tokens = tokenizer.decode( + [predicted_token_id], + skip_special_tokens=True, + clean_up_tokenization_spaces=True, + ) + return predicted_tokens + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "--text", + type=str, + metavar="", + required=True, + help="Masked language model.", + ) + parser.add_argument( + "--model-path", + type=str, + default=DEFAULT_MODEL_PATH, + help="Directory for the downloaded model.", + ) + args = parser.parse_args() + + # Improves model compilation speed dramatically on intel CPUs + if "Intel" in platform.processor(): + os.environ["OMP_NUM_THREADS"] = "1" + os.environ["MKL_NUM_THREADS"] = "1" + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + torch.set_default_device("cpu") + input_dict = { + "input_ids": torch.zeros((BATCH, SEQLEN), dtype=torch.int64), + "attention_mask": torch.zeros((BATCH, SEQLEN), dtype=torch.int64), + "token_type_ids": torch.zeros((BATCH, SEQLEN), dtype=torch.int64), + } + + outputs = execute(args.model_path, args.text, input_dict) + # Get the predictions for the masked token + print(f"input text: {args.text}") + print(f"filled mask: {args.text.replace('[MASK]', outputs)}") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/common/bert-torchscript/download-model.py b/examples/inference/common/bert-torchscript/download-model.py new file mode 100644 index 0000000000..d72f9f7350 --- /dev/null +++ b/examples/inference/common/bert-torchscript/download-model.py @@ -0,0 +1,91 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os + +# suppress extraneous logging +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +from argparse import ArgumentParser +from pathlib import Path + +import torch +from transformers import ( + AutoModelForSequenceClassification, + BertForMaskedLM, + logging, +) + +HF_MODEL_NAME = "bert-base-uncased" +DEFAULT_MODEL_PATH = "../../models/bert-mlm.torchscript" + + +def main(): + parser = ArgumentParser(description="Download model for inference.") + parser.add_argument( + "--mlm", + action="store_true", + help="Whether to use the Bert's Masked Language Model variant", + ) + parser.add_argument( + "--output-path", + "-o", + type=str, + help="Location to save the model", + default=DEFAULT_MODEL_PATH, + ) + + args = parser.parse_args() + + torch.set_default_device("cpu") + + model_path = Path(args.output_path) + + print("Downloading model...") + logging.set_verbosity_error() # Disable warning suggesting to train the model + if args.mlm: + model = BertForMaskedLM.from_pretrained(HF_MODEL_NAME) + else: + model = AutoModelForSequenceClassification.from_pretrained( + HF_MODEL_NAME + ) + + model.eval() + # We set return_dict to False to return Tensors directly + model.config.return_dict = False + + print("Saving model in TorchScript format...") + model_path = Path(args.output_path) + if model_path.exists(): + print(f"'{args.output_path}' already exists.\n") + else: + print("Converting the model to TorchScript format...") + batch = 1 + seqlen = 128 + inputs = { + "input_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seqlen), dtype=torch.int64), + "token_type_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + } + with torch.no_grad(): + traced_model = torch.jit.trace( + model, example_kwarg_inputs=dict(inputs), strict=False + ) + + torch.jit.save(traced_model, model_path) + print("Model saved.") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/resnet50-python-torchscript/.gitignore b/examples/inference/resnet50-python-torchscript/.gitignore new file mode 100644 index 0000000000..2c785ab505 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/.gitignore @@ -0,0 +1 @@ +model-repository/ diff --git a/examples/inference/resnet50-python-torchscript/README.md b/examples/inference/resnet50-python-torchscript/README.md new file mode 100644 index 0000000000..c72dcc3561 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/README.md @@ -0,0 +1,50 @@ +# TorchScript ResNet-50 inference with Python + +This directory includes scripts used to run simple ResNet-50 inference via the +MAX Engine Python API to classify an input image. In this case, we use an image +of a leatherback turtle as an example. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Scripts included + +- `download-model.py`: Downloads the model from HuggingFace, converts it to +TorchScript, and saves it to an output directory of your choosing, or defaults +to `../../models/resnet50.torchscript`. + + For more information about the model, please refer to the + [model card](https://huggingface.co/microsoft/resnet-50). + +- `simple-inference.py`: Classifies example input image using MAX Engine. +The script prepares an example input, executes the model, and generates the +resultant classification output. + + You can use the `--input` CLI flag to specify an input example. + For example: + + ```sh + python3 simple-inference.py --input= + ``` diff --git a/examples/inference/resnet50-python-torchscript/download-model.py b/examples/inference/resnet50-python-torchscript/download-model.py new file mode 100644 index 0000000000..b93669138a --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/download-model.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +from argparse import ArgumentParser + +# suppress extraneous logging +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" + +from pathlib import Path + +import torch +from transformers import ResNetForImageClassification + +DEFAULT_MODEL_PATH = "../../models/resnet50.torchscript" +DESCRIPTION = "Download a ResNet-50 model." +HF_MODEL_NAME = "microsoft/resnet-50" + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "-o", + "--output-path", + type=str, + default=DEFAULT_MODEL_PATH, + help="Location to save the model.", + ) + args = parser.parse_args() + + torch.set_default_device("cpu") + + print("Downloading model...") + model = ResNetForImageClassification.from_pretrained(HF_MODEL_NAME) + model.eval() + # We set return_dict to False to return Tensors directly + model.config.return_dict = False + + print("Saving model in TorchScript format...") + model_path = Path(args.output_path) + if model_path.exists(): + print(f"'{args.output_path}' already exists.\n") + else: + print("Converting the model to TorchScript format...") + input_batch = torch.zeros((1, 3, 224, 224), dtype=torch.float32) + with torch.no_grad(): + traced_model = torch.jit.trace(model, input_batch) + + torch.jit.save(traced_model, model_path) + print(f"Model saved to {args.output_path}.\n") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/resnet50-python-torchscript/environment.yml b/examples/inference/resnet50-python-torchscript/environment.yml new file mode 100644 index 0000000000..b600eef8fc --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/environment.yml @@ -0,0 +1,9 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge + - defaults +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/resnet50-python-torchscript/input/leatherback_turtle.jpg b/examples/inference/resnet50-python-torchscript/input/leatherback_turtle.jpg new file mode 100644 index 0000000000..82a4a5e6a1 Binary files /dev/null and b/examples/inference/resnet50-python-torchscript/input/leatherback_turtle.jpg differ diff --git a/examples/inference/resnet50-python-torchscript/magic.lock b/examples/inference/resnet50-python-torchscript/magic.lock new file mode 100644 index 0000000000..d2a25733af --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/magic.lock @@ -0,0 +1,8098 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + purls: [] + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=compressed-mapping + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + purls: [] + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: [] + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: [] + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + purls: [] + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.16-py312h66e93f0_1.conda + sha256: 459092c4e9305e00a0207b764a266c9caa14d82196322b2a74c96028c563a809 + md5: efe4a3f62320156f68579362314009f3 + depends: + - __glibc >=2.17,<3.0.a0 + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 340540 + timestamp: 1724954755987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.16-py312h024a12e_1.conda + sha256: d19a1c8b3fd44414657066becba960143e7115a385fb71b941f7e9c74f066a32 + md5: fd83a478d686df79aa394b9db1ad20b5 + depends: + - __osx >=11.0 + - dill >=0.3.8 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 342831 + timestamp: 1724954807776 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.1-pyhd8ed1ab_0.conda + sha256: 6b955c8530985fa727ad3323653a54af44ecf453cfdb1b549b3edff609bd3728 + md5: 254f787d5068bc89f578bf63893ce8b4 + depends: + - python >=3.8 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/networkx?source=hash-mapping + size: 1459994 + timestamp: 1680693050542 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 41362848 + timestamp: 1735932311857 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/resnet50-python-torchscript/pixi.toml b/examples/inference/resnet50-python-torchscript/pixi.toml new file mode 100644 index 0000000000..8d3f09c09c --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/pixi.toml @@ -0,0 +1,26 @@ +[project] +name = "Resnet50 Python Torchscript" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +networkx = "==3.1" +transformers = ">=4.44.0" +pillow = ">=10.3.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/resnet50-python-torchscript/run.sh b/examples/inference/resnet50-python-torchscript/run.sh new file mode 100755 index 0000000000..c31d2eeb60 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/run.sh @@ -0,0 +1,28 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +set -ex + +# Example input for the model +INPUT_EXAMPLE="input/leatherback_turtle.jpg" + +MODEL_PATH="../../models/resnet50.torchscript" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Download model from HuggingFace +python3 download-model.py -o "$MODEL_PATH" + +python3 simple-inference.py --input "$INPUT_EXAMPLE" --model-path "$MODEL_PATH" diff --git a/examples/inference/resnet50-python-torchscript/simple-inference.py b/examples/inference/resnet50-python-torchscript/simple-inference.py new file mode 100644 index 0000000000..572ad10bf5 --- /dev/null +++ b/examples/inference/resnet50-python-torchscript/simple-inference.py @@ -0,0 +1,98 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os +import platform +import signal +from argparse import ArgumentParser + +import numpy as np +from max import engine +from max.dtype import DType +from PIL import Image +from transformers import AutoImageProcessor, AutoModelForImageClassification + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +DEFAULT_MODEL_PATH = "../../models/resnet50.torchscript" +DESCRIPTION = "Classify an input image." +HF_MODEL_NAME = "microsoft/resnet-50" + + +def execute(model_path, inputs): + session = engine.InferenceSession() + input_spec_list = [ + engine.TorchInputSpec(shape=(1, 3, 224, 224), dtype=DType.float32) + ] + + print("Loading and compiling model...") + model = session.load(model_path, input_specs=input_spec_list) + print("Model compiled.\n") + + print("Executing model...") + outputs = model.execute_legacy(pixel_values=inputs["pixel_values"]) + print("Model executed.\n") + return outputs + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "--input", + type=str, + metavar="", + required=True, + help="Path to input image.", + ) + parser.add_argument( + "--model-path", + type=str, + default=DEFAULT_MODEL_PATH, + help="Location of the downloaded model.", + ) + args = parser.parse_args() + + # Improves model compilation speed dramatically on intel CPUs + if "Intel" in platform.processor(): + os.environ["OMP_NUM_THREADS"] = "1" + os.environ["MKL_NUM_THREADS"] = "1" + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + # Preprocess input image + print("Processing input...") + image = Image.open(args.input) + processor = AutoImageProcessor.from_pretrained(HF_MODEL_NAME) + inputs = processor(images=image, return_tensors="np") + print("Input processed.\n") + + # Classify input image + outputs = execute(args.model_path, inputs) + + # Extract class predictions from output + print("Extracting class from outputs...") + predicted_label = np.argmax(outputs["result0"], axis=-1)[0] + model = AutoModelForImageClassification.from_pretrained(HF_MODEL_NAME) + predicted_class = model.config.id2label[predicted_label] + + print( + "\nThe input image is likely one of the following classes:" + f" \n{predicted_class}" + ) + + +if __name__ == "__main__": + main() diff --git a/examples/inference/stable-diffusion-mojo-onnx/.gitignore b/examples/inference/stable-diffusion-mojo-onnx/.gitignore new file mode 100644 index 0000000000..593cb73472 --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/.gitignore @@ -0,0 +1 @@ +output.png diff --git a/examples/inference/stable-diffusion-mojo-onnx/README.md b/examples/inference/stable-diffusion-mojo-onnx/README.md new file mode 100644 index 0000000000..e8eee6302f --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/README.md @@ -0,0 +1,51 @@ +# Stable Diffusion inference with Mojo + +This directory illustrates how to run Stable Diffusion through MAX Engine. +Specifically, this example extracts StableDiffusion-1.5 from Hugging Face and executes +it via the MAX Engine Mojo API. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Custom Images + +Getting started with your own creative prompts is as simple as: + +```sh +./text_to_image.🔥 --prompt "my image description" -o my-image.png +``` + +But of course, there are some additional settings that can be tweaked for more +fine-grained control over image output. See `./text_to_image.🔥 --help` for +details. + +## Files + +- `download-model.py`: Downloads [runwayml/stable-diffusion-v1-5 +](https://huggingface.co/runwayml/stable-diffusion-v1-5) +and exports it as ONNX. + +- `text_to_image.🔥`: Example program that runs full stable-diffusion pipeline +through MAX Engine in order to generate images from the given prompt. diff --git a/examples/inference/stable-diffusion-mojo-onnx/environment.yml b/examples/inference/stable-diffusion-mojo-onnx/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/stable-diffusion-mojo-onnx/magic.lock b/examples/inference/stable-diffusion-mojo-onnx/magic.lock new file mode 100644 index 0000000000..10dde0f00b --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/magic.lock @@ -0,0 +1,8173 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + purls: [] + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + sha256: 000b32aa2b960fe1e39aecdd3e5b0eea0f9b1e9d622188c7bd8a6f86c244233d + md5: 9a8208360743187a5eabc2b2b05cb74f + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.8 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=hash-mapping + size: 259655 + timestamp: 1726154689209 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + purls: [] + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: [] + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: [] + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + purls: [] + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + sha256: e1a2426f23535fc15e577d799685229a93117b645734e5cca60597bb23cef09e + md5: b1325cda3f250f9f842180607054e6ed + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 41702764 + timestamp: 1718833930009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + sha256: a55086ded25a27a0f6f7ec3bd82dfc6d594e7e119ad6a1e2dd9c449b4931e3e0 + md5: fe73c159f45d5660035ae21a3c799227 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42558380 + timestamp: 1718835195362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + sha256: 37907cdfdb8765d26cb239098fcb053b0b55216945d8bedc9429023ba8db11ab + md5: 4d3a01b6c6df5cc761adb1f3da5b99c2 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42691135 + timestamp: 1718834038233 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/stable-diffusion-mojo-onnx/pixi.toml b/examples/inference/stable-diffusion-mojo-onnx/pixi.toml new file mode 100644 index 0000000000..9af82f125a --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/pixi.toml @@ -0,0 +1,26 @@ +[project] +name = "Stable Diffusion Mojo Onnx" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +huggingface_hub = ">=0.24.6,<0.25" +pillow = "==10.3.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git "a/examples/inference/stable-diffusion-mojo-onnx/python_utils.\360\237\224\245" "b/examples/inference/stable-diffusion-mojo-onnx/python_utils.\360\237\224\245" new file mode 100644 index 0000000000..9303072f1a --- /dev/null +++ "b/examples/inference/stable-diffusion-mojo-onnx/python_utils.\360\237\224\245" @@ -0,0 +1,91 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from python import Python, PythonObject +from memory import memcpy, UnsafePointer +from collections import List + +from max.tensor import Tensor, TensorShape + + +@always_inline +fn numpy_data_pointer[ + type: DType +](numpy_array: PythonObject) raises -> UnsafePointer[Scalar[type]]: + return numpy_array.__array_interface__["data"][0].unsafe_get_as_pointer[ + type + ]() + + +@always_inline +fn memcpy_to_numpy[ + type: DType +](array: PythonObject, tensor: Tensor[type]) raises: + var dst = numpy_data_pointer[type](array) + var src = tensor._ptr + var length = tensor.num_elements() + memcpy(dst.address, src.address, length) + + +@always_inline +fn memcpy_from_numpy[ + type: DType +](array: PythonObject, tensor: Tensor[type]) raises: + var src = numpy_data_pointer[type](array) + var dst = tensor._ptr + var length = tensor.num_elements() + memcpy(dst.address, src.address, length) + + +@always_inline +fn shape_to_python_list(shape: TensorShape) raises -> PythonObject: + var python_list = Python.evaluate("list()") + for i in range(shape.rank()): + _ = python_list.append(shape[i]) + return python_list^ + + +@always_inline +fn get_np_dtype[type: DType](np: PythonObject) raises -> PythonObject: + @parameter + if type is DType.float32: + return np.float32 + elif type is DType.int32: + return np.int32 + elif type is DType.int64: + return np.int64 + elif type is DType.uint8: + return np.uint8 + + raise "Unknown datatype" + + +@always_inline +fn tensor_to_numpy[ + type: DType +](tensor: Tensor[type], np: PythonObject) raises -> PythonObject: + var shape = shape_to_python_list(tensor.shape()) + var tensor_as_numpy = np.zeros(shape, get_np_dtype[type](np)) + memcpy_to_numpy(tensor_as_numpy, tensor) + return tensor_as_numpy^ + + +@always_inline +fn numpy_to_tensor[type: DType](array: PythonObject) raises -> Tensor[type]: + var shape = List[Int]() + var array_shape = array.shape + for dim in array_shape: + shape.append(dim) + var out = Tensor[type](shape) + memcpy_from_numpy(array, out) + return out^ diff --git a/examples/inference/stable-diffusion-mojo-onnx/run.sh b/examples/inference/stable-diffusion-mojo-onnx/run.sh new file mode 100755 index 0000000000..9a89ecfb28 --- /dev/null +++ b/examples/inference/stable-diffusion-mojo-onnx/run.sh @@ -0,0 +1,26 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# If anything goes wrong, stop running the script. +set -e + +NPROMPT="bad anatomy, looking away, looking sideways, crooked stick" +NPROMPT="$NPROMPT, stick not going through jaw, orange tongue" +PPROMPT="Cute puppy chewing on a stick" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Execute model +mojo text_to_image.🔥 --seed 7 --num-steps 20 --prompt "$PPROMPT" --negative-prompt "$NPROMPT" diff --git "a/examples/inference/stable-diffusion-mojo-onnx/scheduler.\360\237\224\245" "b/examples/inference/stable-diffusion-mojo-onnx/scheduler.\360\237\224\245" new file mode 100644 index 0000000000..36678ef9d1 --- /dev/null +++ "b/examples/inference/stable-diffusion-mojo-onnx/scheduler.\360\237\224\245" @@ -0,0 +1,155 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# +# This code is directly ported from the hugging face diffusers library. +# +# Copyright 2024 Zhejiang University Team and The HuggingFace Team. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""A simple helper implementation of a pndm schedular for stable diffusion """ + +from max.tensor import Tensor + +alias FloatTensor = Tensor[DType.float32] + + +struct Scheduler: + alias training_steps = 1000 + alias init_noise_sigma = 1.0 + alias beta_start = 0.00085 + alias beta_end = 0.012 + + var counter: Int + var step_ratio: Int + var timesteps: List[Int] + var alphas_cumprod: List[Float32] + var previous_outputs: List[FloatTensor] + + def __init__(out self, inference_steps: Int): + self.counter = 0 + self.previous_outputs = List[FloatTensor]() + self.alphas_cumprod = List[Float32]() + + # Generate timesteps. + self.step_ratio = Self.training_steps // inference_steps + self.timesteps = List[Int]() + for i in range(1, Self.training_steps, self.step_ratio): + self.timesteps.append(i) + + self.timesteps.reverse() + + # Duplicate the second timestep because this scheduler skips the prk steps. + if len(self.timesteps) >= 2: + self.timesteps.insert(1, self.timesteps[1]) + + # Generate alpha cumulative product. + var start = Self.beta_start**0.5 + var end = Self.beta_end**0.5 + var step = (end - start) / Self.training_steps + var cumprod = 1.0 + for i in range(Self.training_steps): + var beta = start + (end - start) * (i / Self.training_steps) + var alpha = 1.0 - (beta**2) + cumprod *= alpha + self.alphas_cumprod.append(cumprod.cast[DType.float32]()) + + def step( + mut self, + model_output: FloatTensor, + timestep: Int, + sample: FloatTensor, + ) -> FloatTensor: + var previous_timestep = timestep - self.step_ratio + + if self.counter == 1: + # Special case: the second timestep is repeated. + previous_timestep = timestep + timestep = timestep + self.step_ratio + else: + # TODO: clear out old tensors. + # For some reason, doing this leads to a crash. + # self.previous_outputs = self.previous_outputs[-3:] + self.previous_outputs.append(FloatTensor(model_output)) + + averaged_output = FloatTensor(model_output) + if len(self.previous_outputs) == 1 and self.counter == 0: + # First input, there is no data to average. + pass + elif len(self.previous_outputs) == 1 and self.counter == 1: + averaged_output = ( + averaged_output + self.previous_outputs[-1] + ) / 2.0 + elif len(self.previous_outputs) == 2: + averaged_output = ( + 3 * self.previous_outputs[-1] - self.previous_outputs[-2] + ) / 2.0 + elif len(self.previous_outputs) == 3: + averaged_output = ( + 23 * self.previous_outputs[-1] + - 16 * self.previous_outputs[-2] + + 5 * self.previous_outputs[-3] + ) / 12.0 + else: + averaged_output = (1.0 / 24.0) * ( + 55 * self.previous_outputs[-1] + - 59 * self.previous_outputs[-2] + + 37 * self.previous_outputs[-3] + - 9 * self.previous_outputs[-4] + ) + + previous_sample = self._get_previous_sample( + sample, timestep, previous_timestep, averaged_output + ) + self.counter += 1 + + return previous_sample + + def _get_previous_sample( + mut self, + sample: FloatTensor, + timestep: Int, + previous_timestep: Int, + model_output: FloatTensor, + ) -> FloatTensor: + alpha_prod_t = self.alphas_cumprod[timestep] + alpha_prod_t_previous = ( + self.alphas_cumprod[previous_timestep] if previous_timestep + >= 0 else self.alphas_cumprod[0] + ) + beta_prod_t = 1 - alpha_prod_t + beta_prod_t_previous = 1 - alpha_prod_t_previous + + sample_coeff = (alpha_prod_t_previous / alpha_prod_t) ** (0.5) + + model_output_denom_coeff = alpha_prod_t * beta_prod_t_previous ** ( + 0.5 + ) + (alpha_prod_t * beta_prod_t * alpha_prod_t_previous) ** (0.5) + + previous_sample = ( + sample_coeff * sample + - (alpha_prod_t_previous - alpha_prod_t) + * model_output + / model_output_denom_coeff + ) + return previous_sample diff --git "a/examples/inference/stable-diffusion-mojo-onnx/text_to_image.\360\237\224\245" "b/examples/inference/stable-diffusion-mojo-onnx/text_to_image.\360\237\224\245" new file mode 100755 index 0000000000..8f78f144dc --- /dev/null +++ "b/examples/inference/stable-diffusion-mojo-onnx/text_to_image.\360\237\224\245" @@ -0,0 +1,223 @@ +#!/usr/bin/env mojo +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import sys +import random +import os +from pathlib import Path + +from collections import List +from memory import memcpy +from python import Python +from random import seed + +from max.engine import InferenceSession +from max.tensor import Tensor, TensorShape, TensorSpec + +# Local Mojo imports +import python_utils +from scheduler import Scheduler + + +var GUIDANCE_SCALE_FACTOR = Float32(7.5) +var LATENT_SCALE_FACTOR = Float32(0.18215) +var OUTPUT_HEIGHT = 512 +var OUTPUT_WIDTH = 512 +var LATENT_WIDTH = OUTPUT_WIDTH // 8 +var LATENT_HEIGHT = OUTPUT_HEIGHT // 8 +var LATENT_CHANNELS = 4 + + +def vstack[dtype: DType](a: Tensor[dtype], b: Tensor[dtype]) -> Tensor[dtype]: + """Concatenate tensors a & b along the outermost dimension.""" + # Generate return shape. + out_shape = List[Int]() + out_shape.append(a.shape()[0] + b.shape()[0]) + for i in range(1, a.shape().rank()): + out_shape.append(a.shape()[i]) + + # Allocate return tensor. + out = Tensor[dtype](TensorShape(out_shape)) + + # Fill data. + memcpy(out.unsafe_ptr().address, a.unsafe_ptr().address, a.num_elements()) + memcpy( + (out.unsafe_ptr() + a.num_elements()).address, + b.unsafe_ptr().address, + b.num_elements(), + ) + return out + + +def split[dtype: DType](x: Tensor[dtype], i: Int) -> Tensor[dtype]: + """Return the ith slice of the outermost dim; i.e., x[idx, :, :, ..., :].""" + # Generate return shape + shape = List[Int]() + shape.append(1) + for i in range(1, x.shape().rank()): + shape.append(x.shape()[i]) + # Allocate return tensor + ret = Tensor[dtype](TensorShape(shape)) + # Fill data + memcpy( + ret.unsafe_ptr().address, + (x.unsafe_ptr() + (x.num_elements() // 2) * i).address, + x.num_elements() // 2, + ) + return ret + + +def main(): + # Parse args. + USAGE = ( + "Usage: ./text_to_image.🔥 --prompt [--negative-prompt ]" + " [--num-steps ] [--seed ] [-o ]" + ) + + argv = sys.argv() + if len(argv) % 2 == 0: + print(USAGE) + raise Error("All options require an argument") + + # Set default values + seed() + prompt = String("") + negative_prompt = String("") + num_steps = 25 + hf = Python.import_module("huggingface_hub") + model_dir = Path( + String(hf.snapshot_download("modularai/stable-diffusion-1.5-onnx")) + ) + output = String("output.png") + + for i in range(1, len(argv), 2): + if argv[i] == "--prompt": + prompt = String(argv[i + 1]) + elif argv[i] == "--negative-prompt": + negative_prompt = String(argv[i + 1]) + elif argv[i] == "--num-steps": + num_steps = atol(argv[i + 1]) + elif argv[i] == "--seed": + seed(atol(argv[i + 1])) + elif argv[i] == "-o" or argv[i] == "--output": + output = String(argv[i + 1]) + else: + print(USAGE) + raise Error(String("Unknown option: ") + argv[i]) + + # Only required arg is --prompt + if prompt == "": + print(USAGE) + raise Error("--prompt option is required") + + # Import python modules. + np = Python.import_module("numpy") + Image = Python.import_module("PIL.Image") + transformers = Python.import_module("transformers") + + # Compile & load models - this may take a few minutes. + print("Loading and compiling models...") + session = InferenceSession() + txt_encoder = session.load(model_dir / "text_encoder" / "model.onnx") + img_decoder = session.load(model_dir / "vae_decoder" / "model.onnx") + img_diffuser = session.load(model_dir / "unet" / "model.onnx") + print("Models compiled.\n") + + # Tokenize inputs and run through text encoder. + print("Processing input...") + tokenizer = transformers.CLIPTokenizer.from_pretrained( + os.path.join(model_dir.path, "tokenizer") + ) + max_length = Int(tokenizer.model_max_length) + prompt_p = tokenizer(prompt, padding="max_length", max_length=max_length) + prompt_n = tokenizer( + negative_prompt, padding="max_length", max_length=max_length + ) + + prompt_p_tensor = python_utils.numpy_to_tensor[DType.int32]( + np.array(prompt_p["input_ids"], dtype=np.int32) + ) + prompt_n_tensor = python_utils.numpy_to_tensor[DType.int32]( + np.array(prompt_n["input_ids"], dtype=np.int32) + ) + + input_ids = vstack[DType.int32]( + prompt_p_tensor.reshape(TensorShape(1, max_length)), + prompt_n_tensor.reshape(TensorShape(1, max_length)), + ) + + encoder_output = txt_encoder.execute("input_ids", input_ids) + encoder_hidden_states = encoder_output.get[DType.float32]( + "last_hidden_state" + ) + print("Input processed.\n") + + # Initialize latent. + print("Initializing latent...") + + schedule = Scheduler(num_steps) + + # Note: For onnx, shapes are given in NCHW format. + latent = ( + Tensor[DType.float32].randn( + TensorShape(1, LATENT_CHANNELS, LATENT_HEIGHT, LATENT_WIDTH) + ) + * Scheduler.init_noise_sigma + ) + + # Loop through diffusion model. + for i in range(len(schedule.timesteps)): + print("\rGenerating image:", i, "/", num_steps, end="") + + # Duplicate latent to create full sample. + sample = vstack(latent, latent) + + # Execute the diffusion model with bs=2. Both batches have same primary input and + # timestep, but the encoder_hidden_states (primary prompt vs negative) differs. + timestep_tensor = Tensor[DType.int64](TensorSpec(DType.int64, 1)) + timestep_tensor[0] = Int(schedule.timesteps[i]) + + diffuser_output = img_diffuser.execute( + "sample", + sample, + "encoder_hidden_states", + encoder_hidden_states, + "timestep", + timestep_tensor, + ) + + noise_pred = diffuser_output.get[DType.float32]("out_sample") + + # Merge conditioned & unconditioned outputs. + noise_pred_text = split[DType.float32](noise_pred, 0) + noise_pred_uncond = split[DType.float32](noise_pred, 1) + noise_pred = noise_pred_uncond + GUIDANCE_SCALE_FACTOR * ( + noise_pred_text - noise_pred_uncond + ) + + # Merge latent with previous iteration. + latent = schedule.step(noise_pred, schedule.timesteps[i], latent) + + # Decode finalized latent. + print("\n\nDecoding image...") + latent = latent * (1 / LATENT_SCALE_FACTOR) + + decoder_output = img_decoder.execute("latent_sample", latent) + decoded = decoder_output.get[DType.float32]("sample") + + image = ((decoded / 2.0 + 0.5).clip(0, 1) * 255.0).astype[DType.uint8]() + np_pixels = python_utils.tensor_to_numpy[DType.uint8](image, np) + np_pixels = np_pixels.squeeze().transpose(1, 2, 0) + Image.fromarray(np_pixels, "RGB").save(output) + print("Image saved to " + output + ".") diff --git a/examples/inference/stable-diffusion-python-onnx/.gitignore b/examples/inference/stable-diffusion-python-onnx/.gitignore new file mode 100644 index 0000000000..593cb73472 --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/.gitignore @@ -0,0 +1 @@ +output.png diff --git a/examples/inference/stable-diffusion-python-onnx/README.md b/examples/inference/stable-diffusion-python-onnx/README.md new file mode 100644 index 0000000000..a96732bcde --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/README.md @@ -0,0 +1,51 @@ +# Stable Diffusion inference with Python + +This directory illustrates how to run Stable Diffusion through MAX Engine. +Specifically, this example extracts StableDiffusion-1.5 from Hugging Face and executes +it via the MAX Engine Python API. + +## Quickstart + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Custom Images + +Getting started with your own creative prompts is as simple as: + +```sh +./text_to_image.py --prompt "my image description" -o my-image.png +``` + +But of course, there are some additional settings that can be tweaked for more +fine-grained control over image output. See `./text_to_image.py --help` for +details. + +## Files + +- `download-model.py`: Downloads [runwayml/stable-diffusion-v1-5 +](https://huggingface.co/runwayml/stable-diffusion-v1-5) +and exports it as ONNX. + +- `text_to_image.py`: Example program that runs full stable-diffusion pipeline +through MAX Engine in order to generate images from the given prompt. diff --git a/examples/inference/stable-diffusion-python-onnx/environment.yml b/examples/inference/stable-diffusion-python-onnx/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/stable-diffusion-python-onnx/magic.lock b/examples/inference/stable-diffusion-python-onnx/magic.lock new file mode 100644 index 0000000000..4c5bcd186f --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/magic.lock @@ -0,0 +1,8272 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + indexes: + - https://pypi.org/simple + - https://download.pytorch.org/whl/cpu + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diffusers-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - pypi: https://files.pythonhosted.org/packages/75/c5/3b84fd731dd93c549a0c25657e4ce5a957aeccd32d60dba2958cd3cdac23/diffusers-0.27.2-py3-none-any.whl + - pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + - pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + - pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + - pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + - pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + - pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + - pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diffusers-0.27.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/aiohappyeyeballs?source=compressed-mapping + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/aiohttp?source=hash-mapping + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/aiosignal?source=hash-mapping + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/attrs?source=compressed-mapping + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/brotli?source=hash-mapping + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + purls: + - pkg:pypi/certifi?source=compressed-mapping + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/cffi?source=hash-mapping + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/charset-normalizer?source=hash-mapping + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + purls: [] + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-3.3.2-pyhd8ed1ab_0.conda + sha256: 06109a3de7a977424d960b75cdb307f8d769eae87c53e33a64e706171199997a + md5: c2f904077afe3a8246c26576f555a6af + depends: + - aiohttp + - dill >=0.3.0,<0.3.9 + - filelock + - fsspec >=2023.1.0,<=2024.12.0 + - huggingface_hub >=0.24.0 + - multiprocess <0.70.17 + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=15.0.0 + - python >=3.9 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.32.2 + - tqdm >=4.66.3 + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/datasets?source=hash-mapping + size: 335311 + timestamp: 1740153561620 +- pypi: https://files.pythonhosted.org/packages/75/c5/3b84fd731dd93c549a0c25657e4ce5a957aeccd32d60dba2958cd3cdac23/diffusers-0.27.2-py3-none-any.whl + name: diffusers + version: 0.27.2 + sha256: 85da5cd1098ab428535d592136973ec0c3f12f78148c94b379cb9f02d2414e75 + requires_dist: + - importlib-metadata + - filelock + - huggingface-hub>=0.20.2 + - numpy + - regex!=2019.12.17 + - requests + - safetensors>=0.3.1 + - pillow + - urllib3<=2.0.0 ; extra == 'dev' + - isort>=5.5.4 ; extra == 'dev' + - ruff==0.1.5 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'dev' + - compel==0.1.8 ; extra == 'dev' + - gitpython<3.1.19 ; extra == 'dev' + - datasets ; extra == 'dev' + - jinja2 ; extra == 'dev' + - invisible-watermark>=0.2.0 ; extra == 'dev' + - k-diffusion>=0.0.12 ; extra == 'dev' + - librosa ; extra == 'dev' + - parameterized ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-timeout ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - requests-mock==1.10.0 ; extra == 'dev' + - safetensors>=0.3.1 ; extra == 'dev' + - sentencepiece>=0.1.91,!=0.1.92 ; extra == 'dev' + - scipy ; extra == 'dev' + - torchvision ; extra == 'dev' + - transformers>=4.25.1 ; extra == 'dev' + - accelerate>=0.11.0 ; extra == 'dev' + - protobuf>=3.20.3,<4 ; extra == 'dev' + - tensorboard ; extra == 'dev' + - peft>=0.6.0 ; extra == 'dev' + - torch>=1.4 ; extra == 'dev' + - jax>=0.4.1 ; extra == 'dev' + - jaxlib>=0.4.1 ; extra == 'dev' + - flax>=0.4.1 ; extra == 'dev' + - hf-doc-builder>=0.3.0 ; extra == 'docs' + - jax>=0.4.1 ; extra == 'flax' + - jaxlib>=0.4.1 ; extra == 'flax' + - flax>=0.4.1 ; extra == 'flax' + - urllib3<=2.0.0 ; extra == 'quality' + - isort>=5.5.4 ; extra == 'quality' + - ruff==0.1.5 ; extra == 'quality' + - hf-doc-builder>=0.3.0 ; extra == 'quality' + - compel==0.1.8 ; extra == 'test' + - gitpython<3.1.19 ; extra == 'test' + - datasets ; extra == 'test' + - jinja2 ; extra == 'test' + - invisible-watermark>=0.2.0 ; extra == 'test' + - k-diffusion>=0.0.12 ; extra == 'test' + - librosa ; extra == 'test' + - parameterized ; extra == 'test' + - pytest ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - requests-mock==1.10.0 ; extra == 'test' + - safetensors>=0.3.1 ; extra == 'test' + - sentencepiece>=0.1.91,!=0.1.92 ; extra == 'test' + - scipy ; extra == 'test' + - torchvision ; extra == 'test' + - transformers>=4.25.1 ; extra == 'test' + - torch>=1.4 ; extra == 'torch' + - accelerate>=0.11.0 ; extra == 'torch' + - accelerate>=0.11.0 ; extra == 'training' + - datasets ; extra == 'training' + - protobuf>=3.20.3,<4 ; extra == 'training' + - tensorboard ; extra == 'training' + - jinja2 ; extra == 'training' + - peft>=0.6.0 ; extra == 'training' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/conda-forge/noarch/diffusers-0.27.2-pyhd8ed1ab_0.conda + sha256: 5720260b1bce855f98323ec18a19903f05e53551f2b26bc17cc59346043328ab + md5: 9c2cd89e6c0b3c2ee1e2d118a00d7e96 + depends: + - filelock + - huggingface_hub + - importlib-metadata + - numpy + - pillow + - python >=3.6 + - pytorch >=1.4 + - regex !=2019.12.17 + - requests + - safetensors + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/diffusers?source=hash-mapping + size: 578830 + timestamp: 1712100797027 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.8-pyhd8ed1ab_0.conda + sha256: 482b5b566ca559119b504c53df12b08f3962a5ef8e48061d62fd58a47f8f2ec4 + md5: 78745f157d56877a2c6e7b386f66f3e2 + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/dill?source=hash-mapping + size: 88169 + timestamp: 1706434833883 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + purls: [] + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + purls: [] + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/frozenlist?source=hash-mapping + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda + sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 + md5: e041ad4c43ab5e10c74587f95378ebc7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 137756 + timestamp: 1734650349242 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/fsspec?source=hash-mapping + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/h2?source=hash-mapping + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hpack?source=hash-mapping + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.24.7-pyhd8ed1ab_0.conda + sha256: 000b32aa2b960fe1e39aecdd3e5b0eea0f9b1e9d622188c7bd8a6f86c244233d + md5: 9a8208360743187a5eabc2b2b05cb74f + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.8 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/huggingface-hub?source=hash-mapping + size: 259655 + timestamp: 1726154689209 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/hyperframe?source=hash-mapping + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/idna?source=hash-mapping + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://download.pytorch.org/whl/Jinja2-3.1.4-py3-none-any.whl#sha256=bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + name: jinja2 + version: 3.1.4 + sha256: bc5dd2abb727a5319567b7a813e6a2e7318c39f4f487cfe6c89c6f9c7d25197d + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + purls: [] + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + purls: [] + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + purls: [] + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + purls: [] + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + purls: [] + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + purls: [] + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + purls: [] + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + purls: [] + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + purls: [] + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: [] + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: [] + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + purls: [] + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 148824 + timestamp: 1733741047892 +- pypi: https://download.pytorch.org/whl/MarkupSafe-2.1.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + name: markupsafe + version: 2.1.5 + sha256: ac07bad82163452a6884fe8fa0963fb98c2346ba78d779ec06bd7a6262132aee + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- pypi: https://download.pytorch.org/whl/mpmath-1.3.0-py3-none-any.whl#sha256=a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + name: mpmath + version: 1.3.0 + sha256: a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c + requires_dist: + - pytest>=4.6 ; extra == 'develop' + - pycodestyle ; extra == 'develop' + - pytest-cov ; extra == 'develop' + - codecov ; extra == 'develop' + - wheel ; extra == 'develop' + - sphinx ; extra == 'docs' + - gmpy2>=2.1.0a4 ; platform_python_implementation != 'PyPy' and extra == 'gmpy' + - pytest>=4.6 ; extra == 'tests' +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/multidict?source=hash-mapping + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.16-py312hb2c0f52_1.conda + sha256: f93627c78d1f86f593350196699b462c334542477aa55fe0212edf45392c9ab4 + md5: 642c63b684ce5614f157572b04816983 + depends: + - dill >=0.3.8 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 341428 + timestamp: 1724954862644 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/multiprocess?source=hash-mapping + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- pypi: https://download.pytorch.org/whl/networkx-3.3-py3-none-any.whl#sha256=28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + name: networkx + version: '3.3' + sha256: 28575580c6ebdaf4505b22c6256a2b9de86b316dc63ba9e93abde3d78dfdbcf2 + requires_dist: + - numpy>=1.23 ; extra == 'default' + - scipy>=1.9,!=1.11.0,!=1.11.1 ; extra == 'default' + - matplotlib>=3.6 ; extra == 'default' + - pandas>=1.4 ; extra == 'default' + - changelist==0.5 ; extra == 'developer' + - pre-commit>=3.2 ; extra == 'developer' + - mypy>=1.1 ; extra == 'developer' + - rtoml ; extra == 'developer' + - sphinx>=7 ; extra == 'doc' + - pydata-sphinx-theme>=0.14 ; extra == 'doc' + - sphinx-gallery>=0.14 ; extra == 'doc' + - numpydoc>=1.7 ; extra == 'doc' + - pillow>=9.4 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.0 ; extra == 'doc' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.12 ; extra == 'extra' + - pydot>=2.0 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + requires_python: '>=3.10' +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pandas?source=hash-mapping + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-10.3.0-py312h287a98d_1.conda + sha256: e1a2426f23535fc15e577d799685229a93117b645734e5cca60597bb23cef09e + md5: b1325cda3f250f9f842180607054e6ed + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 41702764 + timestamp: 1718833930009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-10.3.0-py312hc0f7016_1.conda + sha256: a55086ded25a27a0f6f7ec3bd82dfc6d594e7e119ad6a1e2dd9c449b4931e3e0 + md5: fe73c159f45d5660035ae21a3c799227 + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42558380 + timestamp: 1718835195362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-10.3.0-py312h39b1d8d_1.conda + sha256: 37907cdfdb8765d26cb239098fcb053b0b55216945d8bedc9429023ba8db11ab + md5: 4d3a01b6c6df5cc761adb1f3da5b99c2 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.2,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + purls: + - pkg:pypi/pillow?source=hash-mapping + size: 42691135 + timestamp: 1718834038233 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/propcache?source=hash-mapping + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/pyarrow?source=hash-mapping + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pysocks?source=hash-mapping + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + purls: [] + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tzdata?source=hash-mapping + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=compressed-mapping + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: + - pkg:pypi/xxhash?source=hash-mapping + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + purls: + - pkg:pypi/pytz?source=hash-mapping + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + purls: + - pkg:pypi/regex?source=hash-mapping + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/requests?source=hash-mapping + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=hash-mapping + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + purls: + - pkg:pypi/safetensors?source=compressed-mapping + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- pypi: https://download.pytorch.org/whl/setuptools-70.2.0-py3-none-any.whl#sha256=b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + name: setuptools + version: 70.2.0 + sha256: b8b8060bb426838fbe942479c90296ce976249451118ef566a5a0b7d8b78fb05 + requires_dist: + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - pytest>=6,!=8.1.* ; extra == 'test' + - pytest-checkdocs>=2.4 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mypy ; extra == 'test' + - pytest-enabler>=2.2 ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=23.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.2.0 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - mypy==1.10.0 ; extra == 'test' + - tomli ; extra == 'test' + - importlib-metadata ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test ; extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-ruff>=0.3.2 ; sys_platform != 'cygwin' and extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 35857 + timestamp: 1733502172664 +- pypi: https://download.pytorch.org/whl/sympy-1.13.1-py3-none-any.whl#sha256=db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + name: sympy + version: 1.13.1 + sha256: db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8 + requires_dist: + - mpmath>=1.1.0,<1.4 + - pytest>=7.1.0 ; extra == 'dev' + - hypothesis>=6.70.0 ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/tokenizers?source=hash-mapping + size: 1931389 + timestamp: 1732734727624 +- pypi: https://download.pytorch.org/whl/cpu/torch-2.5.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl#sha256=36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + name: torch + version: 2.5.1 + sha256: 36d1be99281b6f602d9639bd0af3ee0006e7aab16f6718d86f709d395b6f262c + requires_dist: + - filelock + - typing-extensions>=4.8.0 + - networkx + - jinja2 + - fsspec + - nvidia-cuda-nvrtc-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-runtime-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cuda-cupti-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cudnn-cu12==9.1.0.70 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cublas-cu12==12.4.5.8 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cufft-cu12==11.2.1.3 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-curand-cu12==10.3.5.147 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusolver-cu12==11.6.1.9 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-cusparse-cu12==12.3.1.170 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nccl-cu12==2.21.5 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvtx-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - nvidia-nvjitlink-cu12==12.4.127 ; platform_machine == 'x86_64' and platform_system == 'Linux' + - sympy==1.12.1 ; python_full_version == '3.8.*' + - setuptools ; python_full_version >= '3.12' + - sympy==1.13.1 ; python_full_version >= '3.9' + - opt-einsum>=3.3 ; extra == 'opt-einsum' + - optree>=0.12.0 ; extra == 'optree' + requires_python: '>=3.8.0' +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/transformers?source=hash-mapping + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + purls: [] + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + purls: + - pkg:pypi/urllib3?source=hash-mapping + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/yarl?source=hash-mapping + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/zstandard?source=hash-mapping + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 405089 + timestamp: 1714723101397 diff --git a/examples/inference/stable-diffusion-python-onnx/pixi.toml b/examples/inference/stable-diffusion-python-onnx/pixi.toml new file mode 100644 index 0000000000..b6f5be2a07 --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/pixi.toml @@ -0,0 +1,29 @@ +[project] +name = "Stable Diffusion Python Onnx" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +transformers = ">=4.44.0" +huggingface_hub = ">=0.24.6,<0.25" +pillow = "==10.3.0" +numpy = "<2.0" + +# For performance, prefer pytorch over anything else. +# The linux ARM package doesn't exist there, so prefer PyPi instead. +[target.linux-64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +diffusers = "==0.27.2" +[target.osx-arm64.dependencies] +pytorch = {version = "==2.5.1", channel = "pytorch"} +diffusers = "==0.27.2" +[target.linux-aarch64.pypi-dependencies] +torch = "==2.5.1" +diffusers = "==0.27.2" +[pypi-options] +extra-index-urls = ["https://download.pytorch.org/whl/cpu"] diff --git a/examples/inference/stable-diffusion-python-onnx/run.sh b/examples/inference/stable-diffusion-python-onnx/run.sh new file mode 100755 index 0000000000..87a0e0566f --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/run.sh @@ -0,0 +1,27 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# If anything goes wrong, stop running the script. +set -e + +MODEL_DIR="../../models/stable-diffusion-onnx" +NPROMPT="bad anatomy, looking away, looking sideways, crooked stick" +NPROMPT="$NPROMPT, stick not going through jaw, orange tongue" +PPROMPT="Cute puppy chewing on a stick" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# Execute model +python3 text_to_image.py --seed 7 --num-steps 20 --prompt "$PPROMPT" --negative-prompt "$NPROMPT" diff --git a/examples/inference/stable-diffusion-python-onnx/text_to_image.py b/examples/inference/stable-diffusion-python-onnx/text_to_image.py new file mode 100755 index 0000000000..b3cfbfb5ef --- /dev/null +++ b/examples/inference/stable-diffusion-python-onnx/text_to_image.py @@ -0,0 +1,178 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import signal +import sys +from argparse import ArgumentParser +from pathlib import Path + +import numpy as np +from diffusers import PNDMScheduler +from huggingface_hub import snapshot_download +from max.engine import InferenceSession +from PIL import Image +from transformers import CLIPTokenizer + +DESCRIPTION = "Generate an image based on the given prompt." +GUIDANCE_SCALE_FACTOR = 7.5 +LATENT_SCALE_FACTOR = 0.18215 +OUTPUT_HEIGHT = 512 +OUTPUT_WIDTH = 512 +LATENT_WIDTH = OUTPUT_WIDTH // 8 +LATENT_HEIGHT = OUTPUT_HEIGHT // 8 +LATENT_CHANNELS = 4 + + +def run_stable_diffusion( + args, txt_encoder, img_decoder, img_diffuser, tokenizer, scheduler +): + # Tokenize inputs and run through text encoder. + print("Processing input...") + prompt_p = tokenizer( + args.prompt, padding="max_length", max_length=tokenizer.model_max_length + ) + prompt_n = tokenizer( + args.negative_prompt, + padding="max_length", + max_length=tokenizer.model_max_length, + ) + + input_ids = np.stack((prompt_p.input_ids, prompt_n.input_ids)).astype( + np.int32 + ) + encoder_hidden_states = txt_encoder.execute_legacy(input_ids=input_ids)[ + "last_hidden_state" + ] + print("Input processed.\n") + + # Initialize latent and scheduler. + print("Initializing latent...") + + # Note: For onnx, shapes are given in NCHW format. + latent = np.random.normal( + size=(1, LATENT_CHANNELS, LATENT_HEIGHT, LATENT_WIDTH) + ) + latent = latent * scheduler.init_noise_sigma + latent = latent.astype(np.float32) + + # Loop through diffusion model. + scheduler.set_timesteps(args.num_steps) + for i, t in enumerate(scheduler.timesteps): + print(f"\rGenerating image: {i}/{args.num_steps}", end="") + + # Duplicate input and scale based on scheduler. + sample = np.vstack((latent, latent)) + sample = scheduler.scale_model_input(sample, timestep=t) + + # Execute the diffusion model with bs=2. Both batches have same primary input and + # timestep, but the encoder_hidden_states (primary prompt vs negative) differs. + noise_pred = img_diffuser.execute_legacy( + sample=sample, + encoder_hidden_states=encoder_hidden_states, + timestep=np.array([t], dtype=np.int64), + )["out_sample"] + + # Merge conditioned & unconditioned outputs. + noise_pred_text, noise_pred_uncond = np.split(noise_pred, 2) + noise_pred = noise_pred_uncond + GUIDANCE_SCALE_FACTOR * ( + noise_pred_text - noise_pred_uncond + ) + + # Merge latent with previous iteration. + latent = scheduler.step(noise_pred, t, latent).prev_sample + + # Decode finalized latent. + print("\n\nDecoding image...") + latent = latent * (1 / LATENT_SCALE_FACTOR) + decoded = img_decoder.execute_legacy(latent_sample=latent)["sample"] + image = np.clip(decoded / 2 + 0.5, 0, 1).squeeze() + image = (image.transpose(1, 2, 0) * 255).astype(np.uint8) + Image.fromarray(image, "RGB").save(args.output) + print(f"Image saved to {args.output}.") + return + + +def parse(args): + # Parse args. + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "--prompt", + type=str, + metavar="", + required=True, + help="Description of desired image.", + ) + parser.add_argument( + "--negative-prompt", + type=str, + metavar="", + default="", + help="Objects or styles to avoid in generated image.", + ) + parser.add_argument( + "--num-steps", + type=int, + metavar="", + default=25, + help="# of diffusion steps; trades-off speed vs quality", + ) + parser.add_argument( + "--seed", + type=int, + metavar="", + default=None, + help="Seed for psuedo-random number generation.", + ) + parser.add_argument( + "--output", + "-o", + type=str, + metavar="", + default="output.png", + help="Output filename.", + ) + parsed_args = parser.parse_args(args) + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + # Set seed if requested. + if parsed_args.seed: + np.random.seed(parsed_args.seed) + + return parsed_args + + +def main(): + args = parse(sys.argv[1:]) + + # Compile & load models - this may take a few minutes. + session = InferenceSession() + model_dir = Path(snapshot_download("modularai/stable-diffusion-1.5-onnx")) + print("Loading and compiling models...") + txt_encoder = session.load(model_dir / "text_encoder" / "model.onnx") + img_decoder = session.load(model_dir / "vae_decoder" / "model.onnx") + img_diffuser = session.load(model_dir / "unet" / "model.onnx") + print("Models compiled.\n") + + # Instantiate tokenizer and scheduler. + tokenizer = CLIPTokenizer.from_pretrained(model_dir / "tokenizer") + scheduler = PNDMScheduler.from_pretrained(model_dir / "scheduler") + + run_stable_diffusion( + args, txt_encoder, img_decoder, img_diffuser, tokenizer, scheduler + ) + + +if __name__ == "__main__": + main() diff --git a/examples/inference/yolo-python-onnx/.gitignore b/examples/inference/yolo-python-onnx/.gitignore new file mode 100644 index 0000000000..b24b699c42 --- /dev/null +++ b/examples/inference/yolo-python-onnx/.gitignore @@ -0,0 +1 @@ +output.mp4 diff --git a/examples/inference/yolo-python-onnx/README.md b/examples/inference/yolo-python-onnx/README.md new file mode 100644 index 0000000000..2b8a14d180 --- /dev/null +++ b/examples/inference/yolo-python-onnx/README.md @@ -0,0 +1,81 @@ +# YOLOv8 Segmentation with Python + +This directory illustrates how to run YOLOv8 Segmentation through the MAX Engine. +Specifically, this example uses Ultralytics YOLO with opencv to segment images +from the webcam. + +## Quickstart + +This example will change depending on if you have a webcam or not. +If you have a webcam, the example will capture the webcam +and display a window running live segmentation. + +If you do not have a webcam, the example will segment +[a downloaded video file](https://drive.google.com/file/d/1H9abV76VohmT-J2RmDrbDhF-FCHt1Sbh/view?usp=sharing) +and generate `output.mp4`. + +### Magic instructions + +If you have [`magic`](https://docs.modular.com/magic), you can run the +following command: + +```sh +magic run bash run.sh +``` + +### Conda instructions + +Create a Conda environment, activate that environment, and install the +requirements: + +```sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Update the environment with the environment.yml file +conda env update -n max-repo -f environment.yml --prune +# Run the example +conda run -n max-repo --live-stream bash run.sh +``` + +## Note: GUI Dependencies + +The webcam version of this example depends on `opencv-python` +and its ability to render GUIs. +The dependencies for this are not always installed on linux. + +Downloading these dependencies is distro dependent. +On Ubuntu, it should be: + +```bash +apt install -y libgl1 +``` + +## Performance Comparison + +To get an idea of the performance difference between the ONNX Runtime and MAX Engine, +you can run the webcam script with/without the `--onnx` flag. + +The model execution time is printed as part of the window title. +Note, it can take a bit for the execution time to stabilize. + +MAX Engine: + +```sh +./segment.py webcam +``` + +ONNX Runtime: + +```sh +./segment.py webcam --onnx +``` + +## Files + +- `download-model.py`: Downloads YOLOv8n-seg from +[ultralytics](https://github.com/ultralytics/ultralytics) +and exports it as ONNX. + +- `segment.py`: Example program that runs the full YOLO segmentation pipeline +through the MAX Engine on images from the webcam or video files. +Use `--help` to see the various commands. diff --git a/examples/inference/yolo-python-onnx/constants.py b/examples/inference/yolo-python-onnx/constants.py new file mode 100644 index 0000000000..476fd8cd41 --- /dev/null +++ b/examples/inference/yolo-python-onnx/constants.py @@ -0,0 +1,95 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +CLASS_NAMES = [ + "person", + "bicycle", + "car", + "motorcycle", + "airplane", + "bus", + "train", + "truck", + "boat", + "traffic light", + "fire hydrant", + "stop sign", + "parking meter", + "bench", + "bird", + "cat", + "dog", + "horse", + "sheep", + "cow", + "elephant", + "bear", + "zebra", + "giraffe", + "backpack", + "umbrella", + "handbag", + "tie", + "suitcase", + "frisbee", + "skis", + "snowboard", + "sports ball", + "kite", + "baseball bat", + "baseball glove", + "skateboard", + "surfboard", + "tennis racket", + "bottle", + "wine glass", + "cup", + "fork", + "knife", + "spoon", + "bowl", + "banana", + "apple", + "sandwich", + "orange", + "broccoli", + "carrot", + "hot dog", + "pizza", + "donut", + "cake", + "chair", + "couch", + "potted plant", + "bed", + "dining table", + "toilet", + "tv", + "laptop", + "mouse", + "remote", + "keyboard", + "cell phone", + "microwave", + "oven", + "toaster", + "sink", + "refrigerator", + "book", + "clock", + "vase", + "scissors", + "teddy bear", + "hair drier", + "toothbrush", +] diff --git a/examples/inference/yolo-python-onnx/download-model.py b/examples/inference/yolo-python-onnx/download-model.py new file mode 100644 index 0000000000..daf067c1d9 --- /dev/null +++ b/examples/inference/yolo-python-onnx/download-model.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import os +import signal +from argparse import ArgumentParser + +from ultralytics import YOLO + +DEFAULT_MODEL_DIR = "../../models/yolo" +DESCRIPTION = "Download a Yolo segmentation model." + + +def main(): + # Parse args + parser = ArgumentParser(description=DESCRIPTION) + parser.add_argument( + "-o", + "--output-dir", + type=str, + default=DEFAULT_MODEL_DIR, + help="Output directory for the downloaded model.", + ) + args = parser.parse_args() + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + # Download and export model from huggingface. + if os.path.exists(args.output_dir): + print(f"Skipping {args.output_dir} (already exists)") + return + + print("Downloading Model and Exporting...\n") + model = YOLO(f"{args.output_dir}/yolov8n-seg.pt") + model.export(format="onnx", imgsz=(480, 640), simplify=True) + print(f"Model exported to {args.output_dir}/.\n") + + +if __name__ == "__main__": + main() diff --git a/examples/inference/yolo-python-onnx/environment.yml b/examples/inference/yolo-python-onnx/environment.yml new file mode 100644 index 0000000000..13c6313bfc --- /dev/null +++ b/examples/inference/yolo-python-onnx/environment.yml @@ -0,0 +1,8 @@ +name: max-repo +channels: + - https://conda.modular.com/max-nightly/ + - conda-forge +dependencies: + - python>=3.9,<3.13 + - max + - pip>=24.0,<25 diff --git a/examples/inference/yolo-python-onnx/input.mp4 b/examples/inference/yolo-python-onnx/input.mp4 new file mode 100644 index 0000000000..6300d2e3cf Binary files /dev/null and b/examples/inference/yolo-python-onnx/input.mp4 differ diff --git a/examples/inference/yolo-python-onnx/magic.lock b/examples/inference/yolo-python-onnx/magic.lock new file mode 100644 index 0000000000..8f5d689f15 --- /dev/null +++ b/examples/inference/yolo-python-onnx/magic.lock @@ -0,0 +1,2220 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda + sha256: da8c8888de10c1e4234ebcaa1550ac2b4b5408ac20f093fe641e4bc8c9c9f3eb + md5: 04e691b9fadd93a8a9fad87a81d4fd8f + depends: + - python >=3.9,<3.13.0a0 + - setuptools + - wheel + license: MIT + license_family: MIT + size: 1245116 + timestamp: 1734466348103 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce + md5: 75cb7132eb58d97896e173ef12ac9986 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 62931 + timestamp: 1733130309598 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/inference/yolo-python-onnx/pixi.toml b/examples/inference/yolo-python-onnx/pixi.toml new file mode 100644 index 0000000000..1e29df1564 --- /dev/null +++ b/examples/inference/yolo-python-onnx/pixi.toml @@ -0,0 +1,12 @@ +[project] +name = "YOLO Python Onnx" +version = "1.0.0" +description = "MAX Examples" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python =">=3.9,<3.13" +max = "*" +pip = ">=24.0,<25" diff --git a/examples/inference/yolo-python-onnx/requirements.txt b/examples/inference/yolo-python-onnx/requirements.txt new file mode 100644 index 0000000000..f1a8034a23 --- /dev/null +++ b/examples/inference/yolo-python-onnx/requirements.txt @@ -0,0 +1,8 @@ +--extra-index-url https://download.pytorch.org/whl/cpu + +networkx==3.1 +torch==2.5.1 +onnxruntime==1.17.3 +opencv-python==4.9.0.80 +ultralytics==8.2.5 +numpy<2.0 diff --git a/examples/inference/yolo-python-onnx/run.sh b/examples/inference/yolo-python-onnx/run.sh new file mode 100755 index 0000000000..42b9126556 --- /dev/null +++ b/examples/inference/yolo-python-onnx/run.sh @@ -0,0 +1,32 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# If anything goes wrong, stop running the script. +set -e + +MODEL_DIR="../../models/yolo" + +# Make sure we're running from inside the directory containing this file. +cd "$(dirname "$0")" + +# If CONDA_PREFIX is set, install requirements +if [[ -n "$CONDA_PREFIX" ]]; then + python3 -m pip install -r requirements.txt +fi + +# Download model +python3 download-model.py -o "$MODEL_DIR" + +# Execute model +python3 segment.py diff --git a/examples/inference/yolo-python-onnx/segment.py b/examples/inference/yolo-python-onnx/segment.py new file mode 100755 index 0000000000..b64cedd533 --- /dev/null +++ b/examples/inference/yolo-python-onnx/segment.py @@ -0,0 +1,382 @@ +#!/usr/bin/env python3 +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +import os +import platform +import shutil +import signal +import subprocess +import time +from argparse import ArgumentParser + +import cv2 +import numpy as np +import onnxruntime +import torch +from constants import CLASS_NAMES +from max.engine import InferenceSession +from ultralytics.engine.results import Results +from ultralytics.models.yolo.segment.predict import ops + +DESCRIPTION = "Segment images from a webcam or video file using YOLO." +DEFAULT_MODEL_DIR = "../../models/yolo" +DEFAULT_INPUT_FILE = "input.mp4" +DEFAULT_OUTPUT_FILE = "output.mp4" +WINDOW_NAME = "YOLOv8 Segmentation" + + +def resize_and_pad(image, shape): + # Grab shape sizes. + (h, w, _) = image.shape + (target_h, target_w) = shape + + # Resize to fully fit within `shape`. + min_ratio = min(target_h / h, target_w / w) + unpadded_h = int(round(min_ratio * h)) + unpadded_w = int(round(min_ratio * w)) + image = cv2.resize( + image, (unpadded_w, unpadded_h), interpolation=cv2.INTER_LINEAR + ) + + # Pad to be the same size as `shape`. + delta_h = (target_h - unpadded_h) / 2 + delta_w = (target_w - unpadded_w) / 2 + top, bottom = int(round(delta_h - 0.1)), int(round(delta_h + 0.1)) + left, right = int(round(delta_w - 0.1)), int(round(delta_w + 0.1)) + return cv2.copyMakeBorder( + image, + top, + bottom, + left, + right, + cv2.BORDER_CONSTANT, + value=(114, 114, 114), + ) + + +def postprocess(out0, out1, input, frame): + out0 = torch.from_numpy(out0) + out1 = torch.from_numpy(out1) + + pred = ops.non_max_suppression( + out0, + conf_thres=0.25, + iou_thres=0.70, + agnostic=False, + max_det=10, + nc=len(CLASS_NAMES), + classes=None, + )[0] + + if not len(pred): + result = Results( + orig_img=frame, + path="", + names=CLASS_NAMES, + boxes=pred[:, :6], + ) + else: + masks = ops.process_mask( + out1[0], + pred[:, 6:], + pred[:, :4], + input.shape[2:], + upsample=True, + ) # HWC + pred[:, :4] = ops.scale_boxes(input.shape[2:], pred[:, :4], frame.shape) + result = Results( + orig_img=frame, + path="", + names=CLASS_NAMES, + boxes=pred[:, :6], + masks=masks, + ) + return result + + +def camera_functional(): + cap = cv2.VideoCapture(0) + if cap is None: + return False + if not cap.isOpened(): + cap.release() + return False + + can_read_frame, _ = cap.read() + cap.release() + return can_read_frame + + +def process_webcam(args): + # Compile & load models - this may take a few minutes. + print("Loading and compiling model...") + if args.onnx: + engine_name = "ONNX Runtime" + yolo = onnxruntime.InferenceSession( + f"{args.model_dir}/yolov8n-seg.onnx" + ) + else: + engine_name = "MAX Engine" + session = InferenceSession() + yolo = session.load(f"{args.model_dir}/yolov8n-seg.onnx") + print("Model compiled.\n") + + # Setup camera. + print("Grabbing camera input...") + print("Press escape or q to quit") + cap = cv2.VideoCapture(0) + + if cap is None or not cap.isOpened(): + print("Failed to open stream from webcam.") + print( + "If you don't have a webcam, try running with the `video`" + " subcommand instead." + ) + if cap is not None: + cap.release() + exit(1) + + previous_elapsed_ms = [] + + # Loop camera frames running yolo. + while cap.isOpened(): + # Load frame from camera. + success, frame = cap.read() + + if not success: + print("Can't load frame. Camera stream ended?") + break + + # Resize to 640x480 + frame = resize_and_pad(frame, (480, 640)) + + # Preprocess inputs. + input = ( + frame[np.newaxis, :, :, ::-1] + .transpose(0, 3, 1, 2) + .astype(np.float32) + / 255 + ).copy() + + # Run prediction. + start = time.time() + if args.onnx: + outputs = yolo.run(None, {"images": input}) + else: + outputs = list(yolo.execute(images=input).values()) + elapsed_ms = (time.time() - start) * 1000 + + # Postprocess outputs. + result = postprocess(outputs[0], outputs[1], input, frame) + + # Annotate and display frame. + annotated_frame = result.plot() + try: + cv2.imshow(WINDOW_NAME, annotated_frame) + except: + print("Failed to open window to display the annotated frame.") + print( + "If you don't have a gui, try running with the `video`" + " subcommand instead." + ) + break + + # Calculated average fps and update window title. + previous_elapsed_ms.append(elapsed_ms) + previous_elapsed_ms = previous_elapsed_ms[-100:] + average_elapsed_ms = np.average(previous_elapsed_ms) + cv2.setWindowTitle( + WINDOW_NAME, + ( + f"{engine_name}: YOLOv8 Segmentation (Average Model Time:" + f" {average_elapsed_ms:0.1f}ms)" + ), + ) + + # Exit on escape or q. + ESC = 27 + key = cv2.waitKey(1) & 0xFF + if key in [ord("q"), ESC]: + break + + # Clean up resources. + cap.release() + cv2.destroyAllWindows() + + +def process_video(args): + if not os.path.exists(args.input): + print(f"Input file not found: {args.input}") + print("You can use your own video file with the --input flag") + exit(1) + + # Compile & load models - this may take a few minutes. + print("Loading and compiling model...") + session = InferenceSession() + yolo = session.load(f"{args.model_dir}/yolov8n-seg.onnx") + print("Model compiled.\n") + + # Setup video capture. + print("Processing input video...") + cap = cv2.VideoCapture(args.input) + + fourcc = cv2.VideoWriter_fourcc(*"mp4v") + fps = cap.get(cv2.CAP_PROP_FPS) + out = cv2.VideoWriter(args.output, fourcc, fps, (640, 480)) + + # Loop camera frames running yolo. + while cap.isOpened(): + # Load frame from camera. + success, frame = cap.read() + + if not success: + # Out of frames. Everything is done. + break + + # Resize to 640x480 + frame = resize_and_pad(frame, (480, 640)) + + # Preprocess inputs. + input = ( + frame[np.newaxis, :, :, ::-1] + .transpose(0, 3, 1, 2) + .astype(np.float32) + / 255 + ).copy() + + # Run prediction. + outputs = list(yolo.execute(images=input).values()) + + # Postprocess outputs. + result = postprocess(outputs[0], outputs[1], input, frame) + + # Annotate and output frame. + annotated_frame = result.plot() + out.write(annotated_frame) + + # Clean up resources. + cap.release() + out.release() + + # Full path so users can find video easily + output_name = f"{os.getcwd()}/{args.output}" + + # Workaround for linux python-opencv/ffmpeg not being able to encode h264 + if shutil.which("ffmpeg"): + print("Changing video encoding for wider video player support.") + result = subprocess.run( + [ + "ffmpeg", + "-y", + "-loglevel", + "error", + "-i", + output_name, + "-vcodec", + "libx264", + "encoded.mp4", + ] + ) + + # If succesfully encoded write over original file + if result.returncode == 0: + subprocess.run(["mv", "encoded.mp4", output_name]) + else: + print("\nFailed to encode video, but video may still be playable.") + + # Open the video if running in vscode and `code` is on path + if "TERM_PROGRAM" in os.environ and os.environ["TERM_PROGRAM"] == "vscode": + if shutil.which("code"): + result = subprocess.run(["code", output_name]) + + print("Video saved to:", output_name) + + +def main(): + # Parse args. + parser = ArgumentParser(description=DESCRIPTION) + subparsers = parser.add_subparsers(title="Commands", dest="command") + webcam_parser = subparsers.add_parser( + "webcam", help="Segment images from the webcam and display them" + ) + webcam_parser.add_argument( + "--model-dir", + type=str, + default=DEFAULT_MODEL_DIR, + help="Directory for the downloaded model", + ) + webcam_parser.add_argument( + "--onnx", + "--onnx-runtime", + action="store_true", + default=False, + help=( + "Run video segmentation with the ONNX Runtime to compare" + " performance" + ), + ) + video_parser = subparsers.add_parser("video", help="Segment a video file") + video_parser.add_argument( + "--model-dir", + type=str, + default=DEFAULT_MODEL_DIR, + help="Directory for the downloaded model", + ) + video_parser.add_argument( + "--input", + "-i", + type=str, + default=DEFAULT_INPUT_FILE, + help="Input video file to segment", + ) + video_parser.add_argument( + "--output", + "-o", + type=str, + default=DEFAULT_OUTPUT_FILE, + help="Output video file to write to", + ) + args = parser.parse_args() + + # Improves model compilation speed dramatically on intel CPUs + if "Intel" in platform.processor(): + os.environ["OMP_NUM_THREADS"] = "1" + os.environ["MKL_NUM_THREADS"] = "1" + + signal.signal(signal.SIGINT, signal.SIG_DFL) + + if args.command == "webcam": + process_webcam(args) + elif args.command == "video": + process_video(args) + else: + # No command was given. First attempt to run webcam with default value. + # If there is no webcam, run video segmentation with default values. + args.model_dir = DEFAULT_MODEL_DIR + args.input = DEFAULT_INPUT_FILE + args.output = DEFAULT_OUTPUT_FILE + args.onnx = False + + # Check if a webcam is available. + if camera_functional(): + print("Webcam is available.") + print("Running live segmentation.\n") + process_webcam(args) + else: + print("Webcam was not available.") + print("Falling back to video file segmentation.\n") + process_video(args) + + +if __name__ == "__main__": + main() diff --git a/examples/life/magic.lock b/examples/life/magic.lock index 37cc954e6c..cf2dfb127d 100644 --- a/examples/life/magic.lock +++ b/examples/life/magic.lock @@ -45,7 +45,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -57,18 +57,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda @@ -86,8 +86,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda @@ -103,11 +103,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda @@ -129,8 +129,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda @@ -139,7 +139,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -160,7 +160,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda @@ -200,7 +200,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -212,18 +212,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda @@ -241,8 +241,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda @@ -258,11 +258,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda @@ -284,8 +284,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda @@ -294,7 +294,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -314,7 +314,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda osx-arm64: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda @@ -348,7 +348,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -384,11 +384,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda @@ -408,8 +408,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda @@ -418,7 +418,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda @@ -427,7 +427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -1130,6 +1130,7 @@ packages: arch: x86_64 platform: linux license: MIT + license_family: MIT size: 1671633 timestamp: 1740154398990 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda @@ -1148,6 +1149,7 @@ packages: arch: aarch64 platform: linux license: MIT + license_family: MIT size: 1727792 timestamp: 1740157913844 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda @@ -1166,6 +1168,7 @@ packages: arch: arm64 platform: osx license: MIT + license_family: MIT size: 1378165 timestamp: 1740155007314 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -1379,6 +1382,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -1389,6 +1393,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 @@ -1540,52 +1545,52 @@ packages: license: LGPL-2.1-or-later size: 34641 timestamp: 1739039285881 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h1909e37_2.conda - sha256: e06da844b007a64a9ac35d4e3dc4dbc66583f79b57d08166cf58f2f08723a6e8 - md5: 21e468ed3786ebcb2124b123aa2484b7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda + sha256: fdc5519fd91ebfe713561792365a1e86e0e9a1579b32f7df5d4136e97e01e30f + md5: 57983929fd533126e9bd71754f0d25f5 depends: - __glibc >=2.17,<3.0.a0 - aom >=3.9.1,<3.10.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - libgcc >=13 - rav1e >=0.6.6,<1.0a0 - - svt-av1 >=2.3.0,<2.3.1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 arch: x86_64 platform: linux license: BSD-2-Clause license_family: BSD - size: 116202 - timestamp: 1730268687453 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h3b0c220_2.conda - sha256: 8284693096532fb5d1af7fd5c170a4d4f0a54593ba29c881667327b61a7cd7bb - md5: 58ec6027e7b6ea460a4a7ed7112842d8 + size: 117659 + timestamp: 1740443336123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda + sha256: f414adc92127560abe135d7ae56d15d734732186fd0ceea408ab7be6415abb6d + md5: f7ecf6b6fbea3f1f6f4efe97b7e4ce4e depends: - aom >=3.9.1,<3.10.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - libgcc >=13 - rav1e >=0.6.6,<1.0a0 - - svt-av1 >=2.3.0,<2.3.1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 arch: aarch64 platform: linux license: BSD-2-Clause license_family: BSD - size: 116097 - timestamp: 1730268695528 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-h45b7238_2.conda - sha256: c671365e8c822d29b53f20c4573fdbc70f18b50ff9a4b5b2b6b3c8f7ad2ac2a9 - md5: 7571064a60bc193ff5c25f36ed23394a + size: 117519 + timestamp: 1740443361559 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda + sha256: 35f411fb4a9c7dfcf47affed864066ccdaa45969d05403f80134a41cdf7159b6 + md5: 8d1a6e4e698ca66e953622764733803a depends: - __osx >=11.0 - aom >=3.9.1,<3.10.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - rav1e >=0.6.6,<1.0a0 - - svt-av1 >=2.3.0,<2.3.1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 arch: arm64 platform: osx license: BSD-2-Clause license_family: BSD - size: 96781 - timestamp: 1730268761553 + size: 98685 + timestamp: 1740443620556 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda build_number: 31 sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 @@ -1602,6 +1607,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -1620,6 +1626,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -1638,6 +1645,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda @@ -1678,6 +1686,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -1693,6 +1702,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -1708,6 +1718,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -1981,57 +1992,57 @@ packages: license_family: BSD size: 314408 timestamp: 1687766236790 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 + size: 53622 + timestamp: 1740241074834 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 md5: e55712ff40a054134d51b89afca57dbc @@ -2130,32 +2141,32 @@ packages: license_family: GPL size: 37264 timestamp: 1739039332924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -2167,10 +2178,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -2178,11 +2190,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -2191,8 +2203,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -2320,26 +2332,26 @@ packages: license: LicenseRef-libglvnd size: 77736 timestamp: 1731330998960 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be md5: 168cc19c031482f83b23c4eebbb94e26 @@ -2466,6 +2478,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -2481,6 +2494,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -2496,6 +2510,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -2958,50 +2973,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda sha256: dd566e2ef4a83b27d2b26d988cbbed50456294892744639f30f19954d2ee3287 md5: df057752e83bd254f6d65646eb67cd2e @@ -3482,48 +3498,48 @@ packages: license_family: BSD size: 184953 timestamp: 1733740984533 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3538,7 +3554,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3559,16 +3575,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3583,7 +3599,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3604,16 +3620,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -3628,7 +3644,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -3649,14 +3665,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -3668,19 +3684,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 md5: c7f302fd11eeb0987a6a5e1f3aed6a21 @@ -4409,44 +4425,44 @@ packages: license_family: BSD size: 1526706 timestamp: 1694329743011 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 -- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_0.conda - sha256: a8c224fcd6ae01242f93d6e42995ce8377864e659dd385993d5506a3ac175c65 - md5: 33c7b594dcdcef25a54704714dde417b + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + sha256: c253ddeafdc46bb53cdac722d1305a94bbbd9905e6a112e295ce7bb9e7a2f7e7 + md5: 0d27110a2f613abc268e31b3c1d5fb4f depends: - __glibc >=2.17,<3.0.a0 - libegl >=1.7.0,<2.0a0 @@ -4457,11 +4473,11 @@ packages: arch: x86_64 platform: linux license: Zlib - size: 513000 - timestamp: 1739829147175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_0.conda - sha256: 79c3a8a7fd50dd083acac15c5f2a7db9ce72701bdea8752fdb5b864fa26fcdcc - md5: 6977e2039ea2a1fb1c467e0149ebd2f8 + size: 513266 + timestamp: 1740516135153 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda + sha256: d2c1d0baf85f3484fa8630f3067f7411c8abcb8fee0ad67342d82e706c59230e + md5: 83f2b36f187b0269471774983ecfa39f depends: - libegl >=1.7.0,<2.0a0 - libgcc >=13 @@ -4471,11 +4487,11 @@ packages: arch: aarch64 platform: linux license: Zlib - size: 520749 - timestamp: 1739829170243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_0.conda - sha256: b9c23e4c06ca96fc4c7ba015bbb017ae8e876adf4fcf5dd14345315e05ba1117 - md5: 70a757d49be7d41e5aabef2857e44585 + size: 523908 + timestamp: 1740516151246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda + sha256: 0a6ad048f2f311bebc05fc7a31d26373b693949ad0887edf48909b0acb849b5e + md5: ff589d08171ffeb5867e9c6a68ec913d depends: - __osx >=11.0 - libcxx >=18 @@ -4483,8 +4499,8 @@ packages: arch: arm64 platform: osx license: Zlib - size: 490725 - timestamp: 1739829495058 + size: 493998 + timestamp: 1740516182244 - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea md5: 65e113270b460dcdfc4dc0a80bb3d11c @@ -4857,9 +4873,9 @@ packages: license_family: MIT size: 16385 timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f - md5: 355898d24394b2af353eb96358db9fdd +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + sha256: 01ae1e86f79e05b9e687ef3b963e7f4f8a7554ac9f5af4dc1e3dc11ed79548b2 + md5: d86fc7eb811593abc06b328d3d72c001 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -4868,11 +4884,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 2746291 - timestamp: 1730246036363 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 - md5: efb60b536bbf64772929b57f6b30298b + size: 2746763 + timestamp: 1740096577511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda + sha256: dd730fe6914a748f2466ac077f3b5b219fec4e49b9e05454af856e42ffe46c58 + md5: 65e68986e59b0e1272af76e6356828a9 depends: - libgcc >=13 - libstdcxx >=13 @@ -4880,20 +4896,20 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 1796731 - timestamp: 1730246027014 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f - md5: 114c33e9eec335a379c9ee6c498bb807 + size: 1920727 + timestamp: 1740099395955 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda + sha256: 94802f002ec504c4a8a8dc5bb59d992a53eaa41379d7258a409939f9bb84547d + md5: 419e4ba326a85ce687a6b038e442c744 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 arch: arm64 platform: osx license: BSD-2-Clause license_family: BSD - size: 1387330 - timestamp: 1730246134730 + size: 1447364 + timestamp: 1740096672763 - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e md5: d453b98d9c83e71da0741bb0ff4d76bc @@ -5348,9 +5364,9 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_0.conda - sha256: b8f7b4c7264e84fcedce3929239f5c55e86ae90948c9fdee666f93a70ca58e66 - md5: 3fe5420e4da42d8110c28f21de6cc127 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da + md5: 02e4e2fa41a6528afba2e54cbc4280ff depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5359,29 +5375,31 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause - size: 564076 - timestamp: 1740024448267 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda - sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c - md5: be8d5f8cf21aed237b8b182ea86b3dd6 + license_family: BSD + size: 567419 + timestamp: 1740255350233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + sha256: a8e9a9e19ec3778594d9746e308cdba096f3019c0c0a62f552d0d299b35c343f + md5: d98196f3502425e14f82bdfc8eb4ae27 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 539937 - timestamp: 1714723130243 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_0.conda - sha256: ee7bbee860b437a214fbdfb4fdf9e48982dc984ad3b0bf2d6480d94c0a8fc8c4 - md5: 0924e073d067a32ace893528773ffded + size: 550364 + timestamp: 1740255370714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 + md5: 66e5c4b02aa97230459efdd4f64c8ce6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: BSD-3-Clause - size: 398443 - timestamp: 1740024500479 + license_family: BSD + size: 399981 + timestamp: 1740255382232 diff --git a/examples/magic.lock b/examples/magic.lock index 907c3c3e89..c75aae8f6b 100644 --- a/examples/magic.lock +++ b/examples/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,16 +37,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -89,11 +89,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -102,16 +102,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -421,6 +421,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -431,6 +432,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -495,6 +497,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -513,6 +516,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -531,6 +535,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -546,6 +551,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -561,6 +567,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -576,6 +583,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -701,83 +709,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -789,10 +797,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -800,11 +809,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -813,8 +822,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -828,26 +837,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -861,6 +870,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -876,6 +886,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -891,6 +902,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1149,50 +1161,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1288,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1344,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1365,16 +1378,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1389,7 +1402,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1410,16 +1423,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1434,7 +1447,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1455,14 +1468,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1474,19 +1487,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1826,41 +1839,41 @@ packages: license_family: BSD size: 370170 timestamp: 1738271259321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda sha256: 1c7b8a24296bf1309f866d363a1152a796d495f97a87d0c6f35b845e6c153250 md5: 4b2fa94e6d42231ffee6707dfe578915 diff --git a/examples/models/README.md b/examples/models/README.md new file mode 100644 index 0000000000..8784898ce8 --- /dev/null +++ b/examples/models/README.md @@ -0,0 +1,4 @@ +# Downloaded Example Models + +This is where we store downloaded models used across different examples in this +repository. diff --git a/examples/.gitignore b/examples/mojo/.gitignore similarity index 100% rename from examples/.gitignore rename to examples/mojo/.gitignore diff --git a/examples/mojo/README.md b/examples/mojo/README.md new file mode 100644 index 0000000000..f40ecbc1ca --- /dev/null +++ b/examples/mojo/README.md @@ -0,0 +1,48 @@ +# Mojo code examples + +A collection of sample programs written in the +[Mojo](https://docs.modular.com/mojo/manual/) programming language. + +## Getting Started + +The easiest way to get started with Mojo is to install the Magic package and +virtual environment manager. By following the instructions in [Get started with +Magic](https://docs.modular.com/magic/), you can quickly install Magic and use +it to create a virtual environment for Mojo programming. Alternatively, you can +follow the instructions for how to [Add MAX/Mojo to a conda +project](https://docs.modular.com/magic/conda). + +After you have set up a Mojo programming environment, you can then use `git` to +clone this repository of Mojo samples using the command below: + +```bash +git clone https://github.com/modular/max.git +``` + +## Running + +If you're using [`magic`](https://docs.modular.com/magic), navigate into +the `examples` directory and use `magic run` to invoke `mojo` and run the basic +example programs. For example: + +```bash +magic run mojo matmul.mojo +``` + +You'll also find several complete Mojo projects as subdirectories of the +`examples` directory. + +## License + +The Mojo examples in this repository are licensed under the Apache License v2.0 +with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). + +## Contributing + +As a contributor, your efforts and expertise are invaluable in driving the +evolution of the Mojo programming language. The [Mojo contributor +guide](../CONTRIBUTING.md) provides all the information necessary to make +meaningful contributions—from understanding the submission process to +adhering to best practices: + +- [Mojo contributor guide](../CONTRIBUTING.md) diff --git a/examples/check_mod.py b/examples/mojo/check_mod.py similarity index 95% rename from examples/check_mod.py rename to examples/mojo/check_mod.py index e2f2719906..36049a4fd7 100644 --- a/examples/check_mod.py +++ b/examples/mojo/check_mod.py @@ -18,7 +18,7 @@ FIX = """ ------------------------------------------------------------------------- fix following the steps here: - https://github.com/modular/mojo/issues/1085#issuecomment-1771403719 + https://github.com/modular/max/issues/1085#issuecomment-1771403719 ------------------------------------------------------------------------- """ diff --git a/examples/deviceinfo.mojo b/examples/mojo/deviceinfo.mojo similarity index 100% rename from examples/deviceinfo.mojo rename to examples/mojo/deviceinfo.mojo diff --git "a/examples/hello.\360\237\224\245" "b/examples/mojo/hello.\360\237\224\245" similarity index 100% rename from "examples/hello.\360\237\224\245" rename to "examples/mojo/hello.\360\237\224\245" diff --git a/examples/hello_interop.mojo b/examples/mojo/hello_interop.mojo similarity index 100% rename from examples/hello_interop.mojo rename to examples/mojo/hello_interop.mojo diff --git a/examples/life/README.md b/examples/mojo/life/README.md similarity index 100% rename from examples/life/README.md rename to examples/mojo/life/README.md diff --git a/examples/life/benchmark.mojo b/examples/mojo/life/benchmark.mojo similarity index 100% rename from examples/life/benchmark.mojo rename to examples/mojo/life/benchmark.mojo diff --git a/examples/life/gridv1.mojo b/examples/mojo/life/gridv1.mojo similarity index 100% rename from examples/life/gridv1.mojo rename to examples/mojo/life/gridv1.mojo diff --git a/examples/life/gridv2.mojo b/examples/mojo/life/gridv2.mojo similarity index 100% rename from examples/life/gridv2.mojo rename to examples/mojo/life/gridv2.mojo diff --git a/examples/life/lifev1.mojo b/examples/mojo/life/lifev1.mojo similarity index 100% rename from examples/life/lifev1.mojo rename to examples/mojo/life/lifev1.mojo diff --git a/examples/life/lifev2.mojo b/examples/mojo/life/lifev2.mojo similarity index 100% rename from examples/life/lifev2.mojo rename to examples/mojo/life/lifev2.mojo diff --git a/examples/mojo/life/magic.lock b/examples/mojo/life/magic.lock new file mode 100644 index 0000000000..585b1566bd --- /dev/null +++ b/examples/mojo/life/magic.lock @@ -0,0 +1,5402 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunwind-1.6.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.9-h17cf362_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.27-hfa5f0b2_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.8.0-h2ef6bd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.2.4-h9cc03ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.13.6-h3818c69_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.23.1-h3dcc1bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.27-h93a5062_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.2.4-he842692_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 + md5: ae1370588aa6a5157c34c73e9bbb36a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 560238 + timestamp: 1731489643707 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f + md5: f643bb02c4bbcfe7de161a8ca5df530b + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 591318 + timestamp: 1731489774660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 + md5: 346722a0be40f6edc53f12640d301338 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2706396 + timestamp: 1718551242397 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda + sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 + md5: cc744ac4efe5bcaa8cca51ff5b850df0 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 3250813 + timestamp: 1718551360260 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef + md5: 7adba36492a1bb22d98ffffe4f6fc6de + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 2235747 + timestamp: 1718551382432 +- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/attr-2.5.1-h4e544f5_1.tar.bz2 + sha256: 2c793b48e835a8fac93f1664c706442972a0206963bf8ca202e83f7f4d29a7d7 + md5: 1ef6c06fec1b6f5ee99ffe2152e53568 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 74992 + timestamp: 1660065534958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 + md5: b34c2833a1f56db610aeb27f206d800d + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-only or MPL-1.1 + size: 978868 + timestamp: 1733790976384 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda + sha256: 0353e175859c4989251628e4c8f9fb2dc52546b0c031ffe4541eb087ac586573 + md5: e7b46975d2c9a4666da0e9bb8a087f28 + depends: + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-only or MPL-1.1 + size: 980455 + timestamp: 1733791018944 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda + sha256: 9a28344e806b89c87fda0cdabd2fb961e5d2ff97107dba25bac9f5dc57220cc3 + md5: 8e3666c3f6e2c3e57aa261ab103a3600 + depends: + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-only or MPL-1.1 + size: 894517 + timestamp: 1733791145035 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + sha256: 33fe66d025cf5bac7745196d1a3dd7a437abcf2dbce66043e9745218169f7e17 + md5: 6e5a87182d66b2d1328a96b61ca43a62 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 347363 + timestamp: 1685696690003 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda + sha256: 93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8 + md5: 5a74cdee497e6b65173e10d94582fae6 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 316394 + timestamp: 1685695959391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b + md5: f3d63805602166bac09386741e00935e + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 672759 + timestamp: 1640113663539 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dbus-1.13.6-h3818c69_3.tar.bz2 + sha256: fb21c1e677b43f5de8462f15bfbd0dce271cfe60cf1e6df50bc057b11feb52e1 + md5: 23730a06679644276233a5894eb2ef00 + depends: + - expat >=2.4.2,<3.0a0 + - libglib >=2.70.2,<3.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-or-later + license_family: GPL + size: 574595 + timestamp: 1640112246560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 138145 + timestamp: 1730967050578 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda + sha256: 13905ad49c2f43776bac0e464ffd3c9ec10ef35cc7dd7e187af6f66f843fa29a + md5: e8f1d587055376ea2419cc78696abd0b + depends: + - libexpat 2.6.4 h5ad3122_0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 130354 + timestamp: 1730967212801 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.conda + sha256: e621a088b762a8aa99bd8f3ef10e2efe923713bc476babb90e7919f6c13a358b + md5: a37ffeecc1b8a62205bdd8319652758b + depends: + - __osx >=11.0 + - libexpat 2.6.4 h286801f_0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 124765 + timestamp: 1730967188116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fluidsynth-2.3.7-hd992666_0.conda + sha256: 0bf26d25ae79e6f5f01a49a00e9ba3b60b10dd4c12ec43bdba51055c26bc9dd6 + md5: dd6c7b8a1b217ef7522ca987c465651d + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: LGPL + size: 279996 + timestamp: 1729590344462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fluidsynth-2.3.7-h4f58cef_0.conda + sha256: e557d4fcb40f224180d61cc5e57fe3d5d5793a255c7d5a29546e524ef2ffa298 + md5: 0207cc67431f4d12605cae60d8d323d7 + depends: + - alsa-lib >=1.2.12,<1.3.0a0 + - jack >=1.9.22,<1.10.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libstdcxx >=13 + - portaudio >=19.6.0,<19.7.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later + license_family: LGPL + size: 292770 + timestamp: 1729590405853 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fluidsynth-2.3.7-h80fea77_0.conda + sha256: e4c39119797493d4f085cd6274e123372bec77e05ef93203ccf5dee714bfd9c3 + md5: dc2fc082a05af6a790d3e8e3e6489e6c + depends: + - __osx >=11.0 + - libcxx >=17 + - libglib >=2.82.2,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - portaudio >=19.6.0,<19.7.0a0 + - readline >=8.2,<9.0a0 + - sdl2 >=2.30.7,<3.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-or-later + license_family: LGPL + size: 234967 + timestamp: 1729590579216 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 265599 + timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + sha256: fe023bb8917c8a3138af86ef537b70c8c5d60c44f93946a87d1e8bb1a6634b55 + md5: 112b71b6af28b47c624bcbeefeea685b + depends: + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 277832 + timestamp: 1730284967179 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc + md5: 7b29f48742cea5d1ccb5edd839cb5621 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 234227 + timestamp: 1730284037572 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + sha256: 9d93e75a63a8ca8f86d1be09f68f1211754e6f1e9ee4fa6d90b9d46ee0f1dabb + md5: 0754038c806eae440582da1c3af85577 + depends: + - __glibc >=2.17,<3.0.a0 + - gettext-tools 0.23.1 h5888daf_0 + - libasprintf 0.23.1 h8e693c7_0 + - libasprintf-devel 0.23.1 h8e693c7_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + - libgettextpo-devel 0.23.1 h5888daf_0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 484344 + timestamp: 1739038829530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-0.23.1-h5ad3122_0.conda + sha256: fae61ce07f930c00de83d7bc3b5bfc1d981d500517894434632c1565b9a6e579 + md5: 6a8190d3f7d7a171aeacf7d01bb9b14f + depends: + - gettext-tools 0.23.1 h5ad3122_0 + - libasprintf 0.23.1 h5e0f5ae_0 + - libasprintf-devel 0.23.1 h5e0f5ae_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5ad3122_0 + - libgettextpo-devel 0.23.1 h5ad3122_0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 479395 + timestamp: 1739038679347 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.23.1-h3dcc1bd_0.conda + sha256: 9311cd9e64f0ae3bccae58b5b68a4804abd8b3c49f4f327b9573b50b026b317e + md5: 123c4d62e1bcba6274511af8c7cf40d5 + depends: + - __osx >=11.0 + - gettext-tools 0.23.1 h493aca8_0 + - libasprintf 0.23.1 h493aca8_0 + - libasprintf-devel 0.23.1 h493aca8_0 + - libcxx >=18 + - libgettextpo 0.23.1 h493aca8_0 + - libgettextpo-devel 0.23.1 h493aca8_0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + - libintl-devel 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 484476 + timestamp: 1739039461682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + sha256: dd2b54a823ea994c2a7908fcce40e1e612ca00cb9944f2382624ff2d3aa8db03 + md5: 2f659535feef3cfb782f7053c8775a32 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 2967824 + timestamp: 1739038787800 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gettext-tools-0.23.1-h5ad3122_0.conda + sha256: 01f55fbf243f471ef426751de914b62fa21418ca3d0aa7a6983f0f87f6ec84e4 + md5: ba6d592245d2c0eb497cd11f70b50df7 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 3232815 + timestamp: 1739038646552 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.23.1-h493aca8_0.conda + sha256: c26b38bcff84b3af52f061f55de27a45fb2e9a0544c32b3cbddf8be97c80c296 + md5: 4086817e75778198f96c9b2ed4bc5a6e + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: GPL-3.0-or-later + license_family: GPL + size: 2890553 + timestamp: 1739039406578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 96855 + timestamp: 1711634169756 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 + md5: f33009add6a08358bc12d114ceec1304 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 99453 + timestamp: 1711634223220 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda + sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 + md5: 339991336eeddb70076d8ca826dac625 + depends: + - libcxx >=16 + arch: arm64 + platform: osx + license: LGPL-2.0-or-later + license_family: LGPL + size: 79774 + timestamp: 1711634444608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + sha256: fbccddfbbfaf139102e5513a2a053010338809348ade18bbf16cb6b92a53d294 + md5: 0a06f278e5d9242057673b1358a75e8f + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1671633 + timestamp: 1740154398990 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-10.3.0-hb5e3f52_0.conda + sha256: 687fbb17d8303b956ff917247e41ad8c864ed029b2349c0409cc905e11d9257d + md5: 4575cba227f2e4b5d0f23c9adc390f83 + depends: + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1727792 + timestamp: 1740157913844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-10.3.0-hb72c1af_0.conda + sha256: eb9cc0c8e61a9ce1236fdfa5d426ae31ffd9fd1d6b154e2e7318694eaed6c24e + md5: d77e5f42ec2a35950710f57868885683 + depends: + - __osx >=11.0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1378165 + timestamp: 1740155007314 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda + sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 + md5: 5eb22c1d7b3fc4abb50d92d621583137 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 11857802 + timestamp: 1720853997952 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b + md5: f56277b7f079f1b13cbf7fb9b4f194c4 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 464144 + timestamp: 1693879949990 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jack-1.9.22-h5c6c0ed_2.conda + sha256: 4b5714f0798fb38e19d0aced7e5a9069eebf3c8ee9f541d643d4e6d0edcf388f + md5: e6abd2a51bd727a1b62a54524f760864 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 489040 + timestamp: 1693881455137 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 508258 + timestamp: 1664996250081 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 + sha256: 2502904a42df6d94bd743f7b73915415391dd6d31d5f50cb57c0a54a108e7b0a + md5: ab05bcf82d8509b4243f07e93bada144 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 604863 + timestamp: 1664997611416 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c + md5: bff0e851d66725f78dc2fd8b032ddb7e + arch: arm64 + platform: osx + license: LGPL-2.0-only + license_family: LGPL + size: 528805 + timestamp: 1664996399305 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + sha256: 13b863584fccbb9089de73a2442e540703ce4873e4719c9d98c98e4a8e12f9d1 + md5: 988f4937281a66ca19d1adb3b5e3f859 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 43179 + timestamp: 1739038705987 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-0.23.1-h5e0f5ae_0.conda + sha256: f80d436462d78c459758176d59b0231c3cce99502408c2e4af03bacee786fc94 + md5: b34cfd925b96e72b99286e0cff036e82 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 43700 + timestamp: 1739038595159 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.23.1-h493aca8_0.conda + sha256: 2b27d2ede7867fd362f94644aac1d7fb9af7f7fc3f122cb014647b47ffd402a4 + md5: baf9e4423f10a15ca7eab26480007639 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 41679 + timestamp: 1739039255705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + sha256: b05a859fe5a2b43574f3a5d93552061232b92d17017b27ecab1eccca1dbb2fe4 + md5: 2827e722a963b779ce878ef9b5474534 + depends: + - __glibc >=2.17,<3.0.a0 + - libasprintf 0.23.1 h8e693c7_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 34282 + timestamp: 1739038733352 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libasprintf-devel-0.23.1-h5e0f5ae_0.conda + sha256: 35829ce5805229b83e9b660ec6579b04c5ec83ac82ef72d93b31ea47def1ac09 + md5: ec789924a13fcd14c53cbf90ea1b8551 + depends: + - libasprintf 0.23.1 h5e0f5ae_0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 34348 + timestamp: 1739038610428 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.23.1-h493aca8_0.conda + sha256: 25999d3c78270440e7e9e06c2e6f4a2e1ac11d2df84ac7b24280c6f530eed06f + md5: 13d4d79418eb3137fc94fe61e9e572e7 + depends: + - __osx >=11.0 + - libasprintf 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 34641 + timestamp: 1739039285881 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-hf3231e4_3.conda + sha256: fdc5519fd91ebfe713561792365a1e86e0e9a1579b32f7df5d4136e97e01e30f + md5: 57983929fd533126e9bd71754f0d25f5 + depends: + - __glibc >=2.17,<3.0.a0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 117659 + timestamp: 1740443336123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libavif16-1.1.1-h0430067_3.conda + sha256: f414adc92127560abe135d7ae56d15d734732186fd0ceea408ab7be6415abb6d + md5: f7ecf6b6fbea3f1f6f4efe97b7e4ce4e + depends: + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - libgcc >=13 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 117519 + timestamp: 1740443361559 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libavif16-1.1.1-hf9d1e0e_3.conda + sha256: 35f411fb4a9c7dfcf47affed864066ccdaa45969d05403f80134a41cdf7159b6 + md5: 8d1a6e4e698ca66e953622764733803a + depends: + - __osx >=11.0 + - aom >=3.9.1,<3.10.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - rav1e >=0.6.6,<1.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 98685 + timestamp: 1740443620556 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 + md5: dd19e4e3043f6948bd7454b946ee0983 + depends: + - __glibc >=2.17,<3.0.a0 + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 102268 + timestamp: 1729940917945 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcap-2.71-h51d75a7_0.conda + sha256: 2b66e66e6a0768e833e7edc764649679881ec0a6b37d9bf254b1ceb3b8b434ef + md5: 29f6092b6e938516ca0b042837e64fa5 + depends: + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 106877 + timestamp: 1729940936697 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 + md5: 3f3258d8f841fbac63b36b75bdac1afd + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: AGPL-3.0-only + license_family: AGPL + size: 24409456 + timestamp: 1609539093147 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdb-6.2.32-h01db608_0.tar.bz2 + sha256: 1f74d30c72d95c39315c6b5c3f1b328d00c4d5a2feff1e871fe5b71b4cb26811 + md5: 7cbfba14d5adfa65db945d5112909394 + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + arch: aarch64 + platform: linux + license: AGPL-3.0-only + license_family: AGPL + size: 24449415 + timestamp: 1609538998176 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + sha256: f0d5ffbdf3903a7840184d14c14154b503e1a96767c328f61d99ad24b6963e52 + md5: 8bc89311041d7fcb510238cf0848ccae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 242533 + timestamp: 1733424409299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda + sha256: a0a89edcd142942ec5730f2b7d3b3f3e702b9be2d4c675fea3a8b62d40e6adc3 + md5: a8058bcb6b4fa195aaa20452437c7727 + depends: + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 246299 + timestamp: 1733424417343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + sha256: 7fd5408d359d05a969133e47af580183fbf38e2235b562193d427bb9dad79723 + md5: c151d5eb730e9b7480e6d48c0fc44048 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 44840 + timestamp: 1731330973553 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda + sha256: 8962abf38a58c235611ce356b9899f6caeb0352a8bce631b0bcc59352fda455e + md5: cf105bce884e4ef8c8ccdca9fe6695e7 + depends: + - libglvnd 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 53551 + timestamp: 1731330990477 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 394383 + timestamp: 1687765514062 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libflac-1.4.3-h2f0025b_0.conda + sha256: b54935360349d3418b0663d787f20b3cba0b7ce3fcdf3ba5e7ef02b884759049 + md5: 520b12eab32a92e19b1f239ac545ec03 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 371550 + timestamp: 1687765491794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libflac-1.4.3-hb765f3a_0.conda + sha256: 3990b52782fe7207ab642df25368ed443094f6d1a7ea61854935c24192b388aa + md5: 356faba64411660f6c4d24ea31640733 + depends: + - gettext >=0.21.1,<1.0a0 + - libcxx >=15.0.7 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 314408 + timestamp: 1687766236790 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 586185 + timestamp: 1732523190369 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcrypt-lib-1.11.0-h86ecc28_2.conda + sha256: 7b0b59e11511e1c20e4d1b89ac458b4a0799da2ef10980302a5f033ecc434dee + md5: 07c1e27a75b217e5502bff34cd23c353 + depends: + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 635094 + timestamp: 1732523317415 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + sha256: 190097140d9c16637aa516757d8087f17e8c22cc844c87288da64404b81ef43c + md5: a09ce5decdef385bcce78c32809fa794 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 166867 + timestamp: 1739038720211 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-0.23.1-h5ad3122_0.conda + sha256: 5fe9ea0f19d4f89c5f5030a5aad853e05d1fe001ee003e102e4a2a01b0e157cc + md5: 04aa6b35d4581b59aafb2683345579d7 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 207214 + timestamp: 1739038603075 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.23.1-h493aca8_0.conda + sha256: 4dbd3f698d027330033f06778567eda5b985e2348ca92900083654a114ddd051 + md5: 18ad77def4cb7326692033eded9c815d + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: GPL-3.0-or-later + license_family: GPL + size: 166929 + timestamp: 1739039303132 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + sha256: 90f29ec7a7e2d758cb61459e643dcb54933dcf92194be6c29b0a1591fcbb163e + md5: 7a5d5c245a6807deab87558e9efd3ef0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 36818 + timestamp: 1739038746565 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgettextpo-devel-0.23.1-h5ad3122_0.conda + sha256: e56df439c17f8a273ba7e9719def4ac3ff7aaadf37cad92179f4437d753e81a6 + md5: cb0245a67410b455cb8ee80f407f185f + depends: + - libgcc >=13 + - libgettextpo 0.23.1 h5ad3122_0 + arch: aarch64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 37031 + timestamp: 1739038617604 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.23.1-h493aca8_0.conda + sha256: 6031e57ba3c03ca34422b847b98fb70e697a5c10556c8d7b30410a96754c25d8 + md5: e6f75805f4b533d449a5a6d60cbc9a71 + depends: + - __osx >=11.0 + - libgettextpo 0.23.1 h493aca8_0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: GPL-3.0-or-later + license_family: GPL + size: 37264 + timestamp: 1739039332924 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d + md5: 928b8be80851f5d8ffb016f9c81dae7a + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - libglx 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 134712 + timestamp: 1731330998354 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda + sha256: 3e954380f16255d1c8ae5da3bd3044d3576a0e1ac2e3c3ff2fe8f2f1ad2e467a + md5: 0d00176464ebb25af83d40736a2cd3bb + depends: + - libglvnd 1.7.0 hd24410f_2 + - libglx 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 145442 + timestamp: 1731331005019 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 + md5: 37d1af619d999ee8f1f73cf5a06f4e2f + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 3923974 + timestamp: 1737037491054 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_1.conda + sha256: aed7967aaea90b5649eb7eb0eab2ed2270323245eb0832b228e876fbeaae7f76 + md5: 6dfc5a88cfd58288999ab5081f57de9c + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 4004134 + timestamp: 1737037535030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-hdff4504_1.conda + sha256: d002aeaa51424e331f8504a54b6ba4388a6011a0ebcac29296f3d14282bf733b + md5: 849da57c370384ce48bef2e050488882 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 3643364 + timestamp: 1737037789629 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 + md5: 434ca7e50e40f4918ab701e3facd59a0 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 132463 + timestamp: 1731330968309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda + sha256: 57ec3898a923d4bcc064669e90e8abfc4d1d945a13639470ba5f3748bd3090da + md5: 9e115653741810778c9a915a2f8439e7 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 152135 + timestamp: 1731330986070 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 + md5: c8013e438185f33b13814c5c488acd5c + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 75504 + timestamp: 1731330988898 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda + sha256: 6591af640cb05a399fab47646025f8b1e1a06a0d4bbb4d2e320d6629b47a1c61 + md5: 1d4269e233636148696a67e2d30dad2a + depends: + - libglvnd 1.7.0 hd24410f_2 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: LicenseRef-libglvnd + size: 77736 + timestamp: 1731330998960 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be + md5: 168cc19c031482f83b23c4eebbb94e26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 268740 + timestamp: 1731920927644 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgpg-error-1.51-h05609ea_1.conda + sha256: e819b3ba47dc7e195e8e8a9c874d0b45690cccb2fa741f1abd55b28323f9fc43 + md5: 9cabbbc1c3c8e9fa30e90748f14534dd + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 277785 + timestamp: 1731920977846 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.23.1-h493aca8_0.conda + sha256: 30d2a8a37070615a61777ce9317968b54c2197d04e9c6c2eea6cdb46e47f94dc + md5: 7b8faf3b5fc52744bda99c4cd1d6438d + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 78921 + timestamp: 1739039271409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.23.1-h493aca8_0.conda + sha256: 5db07fa57b8cb916784353aa035fbf32aa7ee2905e38a8e70b168160372833f0 + md5: f9c6d5edc5951ef4010be8cbde9f12d4 + depends: + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.23.1 h493aca8_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 39774 + timestamp: 1739039317742 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmad-0.15.1b-h0b41bf4_1001.conda + sha256: 9e94cec54c4baadaa652c761179b8d32771fe7fa55faf6c78c2e35f942367f74 + md5: dc5cc4700f02ffeecc48253c9f29025b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-only + license_family: GPL + size: 78561 + timestamp: 1670815547616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmad-0.15.1b-hb4cce97_1001.conda + sha256: f39c36ce40bc75bc2eb101e8569caf166d6a02e0b1ef95403146b4f9310df0e3 + md5: 10814f7a570b160cea0c885bc1c5e8d5 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-only + license_family: GPL + size: 79598 + timestamp: 1673354561940 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmad-0.15.1b-h1a8c8d9_1001.conda + sha256: 8e9209acf4bf6865760e61dc0d86116ffc9efc3e13c7f559eb1ea78532a3a625 + md5: 1eb30852ed396fbe6e301fe6d715aef9 + arch: arm64 + platform: osx + license: GPL-2.0-only + license_family: GPL + size: 77255 + timestamp: 1670815732700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d + md5: 601bfb4b3c6f0b844443bb81a56651e0 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 205914 + timestamp: 1719301575771 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 + md5: 15cb67b1b9dd0d4b37c81daba785e6ad + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 208233 + timestamp: 1719301637185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + sha256: 685f73b7241978007dfe0cecb9cae46c6a26d87d192b6f85a09eb65023c0b99e + md5: 57b668b9b78dea2c08e44bb2385d57c0 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 205451 + timestamp: 1719301708541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f + md5: 15345e56d527b330e1cacbdf58676e8f + depends: + - libgcc-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 260658 + timestamp: 1606823578035 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + sha256: 92a87ade11af2cff41c35cf941f1a79390fde1f113f8e51e1cce30d31b7c8305 + md5: ac7534c50934ed25e4749d74b04c667a + depends: + - libgcc-ng >=9.3.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 328825 + timestamp: 1606823775764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a + md5: 3d0dbee0ccd2f6d6781d270313627b62 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 252854 + timestamp: 1606823635137 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + sha256: c0a30ac74eba66ea76a4f0a39acc7833f5ed783a632ca3bb6665b2d81aabd2fb + md5: 48f4330bfcd959c3cfb704d424903c82 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 28361 + timestamp: 1707101388552 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda + sha256: 0c6806dcd53da457c472cf22ad7793aef074cb198a10677a91b02c7dceeee770 + md5: 6d48179630f00e8c9ad9e30879ce1e54 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 29211 + timestamp: 1707101477910 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsndfile-1.2.2-h79657aa_1.conda + sha256: 8fcd5e45d6fb071e8baf492ebb8710203fd5eedf0cb791e007265db373c89942 + md5: ad8e62c0faec46b1442f960489c80b49 + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 396501 + timestamp: 1695747749825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsndfile-1.2.2-h9739721_1.conda + sha256: e559f2f72bb03a554aa5b74230fa19160d33c7981ed385294f1eea9a5871cc03 + md5: 77d552455cbc52e089cdb9df5b283199 + depends: + - lame >=3.100,<3.101.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + license_family: LGPL + size: 317185 + timestamp: 1695747981394 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + sha256: dd566e2ef4a83b27d2b26d988cbbed50456294892744639f30f19954d2ee3287 + md5: df057752e83bd254f6d65646eb67cd2e + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 487271 + timestamp: 1739569869860 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsystemd0-257.3-h27834fc_0.conda + sha256: 707567df4c23c3c62ba97845bc130378526b2ff7ed0800c899bff7a19cf67e1d + md5: c5887d8cb34661658118cc7951772335 + depends: + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 509851 + timestamp: 1739569947167 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + sha256: 35bdafc4b02f61a327f82bb11263c31466367e50b4e5efab3d413509315cb0a7 + md5: e7817c912b25f7599a50eba270e1a463 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 142897 + timestamp: 1739569881116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libudev1-257.3-h1187dce_0.conda + sha256: 996a477ced74941583c88417b5a341ce036b58662981d3792799d4d9ec93071e + md5: 7bcdab7b8ee62692770d292969d6cef2 + depends: + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 154046 + timestamp: 1739569955486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + sha256: f2ac872920833960e514ce9efd8f7c08ce66dd870738d73839d1bce1ac497de6 + md5: a730b2badd586580c5752cc73842e068 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 75491 + timestamp: 1638450786937 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libunwind-1.6.2-h01db608_0.tar.bz2 + sha256: 7862d36ffc9f6b2ed3381ce77c78b9e5691d7353a19dd2050630868e192adf6f + md5: 93b7bbf9099cfe09e67c0abe34bb7885 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 90479 + timestamp: 1638452154070 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + sha256: bfa34a5a929d792dfcfbbe2d9ee21bd870d73d646512e21c871dab0b80194468 + md5: ecd409e7bfcf4ee73f74d7a2cc91a4c3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 121336 + timestamp: 1738604403935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liburing-2.9-h17cf362_0.conda + sha256: 2922ab8ac4cdd966c1b13dad6ccc4c07c7db2054400843ee443ffd5e7b3f292e + md5: 8eef9430276ab3dbe6ad5b8f23ff5e26 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 123614 + timestamp: 1738605619021 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + sha256: c641cdf5c398441df9863291c20574c37b1e4a6113b18a41c6a43ccc1df1b92c + md5: 82e46dc001ab1ef291554ead981b0cde + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libudev1 >=255 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 86196 + timestamp: 1706828413450 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libusb-1.0.27-hfa5f0b2_100.conda + sha256: c3ad82698430b627de6773fa82120cf659405a957c975639f41b3922d4219d9e + md5: ff95dc61e4f11520aa3158979c776c78 + depends: + - libgcc-ng >=12 + - libudev1 >=255 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 89408 + timestamp: 1706828386412 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libusb-1.0.27-h93a5062_100.conda + sha256: 37c377ee456eb77a4f4b15e289ef6c2d213786d2f4c11c7320fd2f654e7642d6 + md5: 711b8190e3e1e30a6598f5f76e0f8a20 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 80917 + timestamp: 1706828785473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 + sha256: 1ade4727be5c52b287001b8094d02af66342dfe0ba13ef69222aaaf2e9be4342 + md5: c2863ff72c6d8a59054f8b9102c206e9 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 292082 + timestamp: 1610616294416 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 + sha256: 60457217e20d8b24a8390c81338a8fa69c8656b440c067cd82f802a09da93cb9 + md5: 92a1a88d1a1d468c19d9e1659ac8d3df + depends: + - libcxx >=11.0.0 + - libogg >=1.3.4,<1.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 254839 + timestamp: 1610609991029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + sha256: 583203155abcfb03938d8473afbf129156b5b30301a0f796c8ecca8c5b7b2ed2 + md5: f1656760dbf05f47f962bfdc59fc3416 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: x86_64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 642349 + timestamp: 1738735301999 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.8.0-h2ef6bd0_0.conda + sha256: d43a637fd237e77b9e72fe0723a06aa998779cf3f88bbe8260c31a9098340374 + md5: 90d998781d2895f73671bba13339d109 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: aarch64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 652340 + timestamp: 1738735348944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 + md5: c7f302fd11eeb0987a6a5e1f3aed6a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 491140 + timestamp: 1730581373280 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpg123-1.32.9-h65af167_0.conda + sha256: d65d5a00278544639ba4f99887154be00a1f57afb0b34d80b08e5cba40a17072 + md5: cdf140c7690ab0132106d3bc48bce47d + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 558708 + timestamp: 1730581372400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpg123-1.32.9-hf642e45_0.conda + sha256: 070bbbbb96856c325c0b6637638ce535afdc49adbaff306e2238c6032d28dddf + md5: d2b4857bdc3b76c36e23236172d09840 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: LGPL-2.1-only + license_family: LGPL + size: 360712 + timestamp: 1730581491116 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opusfile-0.12-h3358134_2.conda + sha256: f4df9df880e405e5c856383f869d5b9d434f78fb7c234c9e7b099ab604fb7fc3 + md5: 5931bcae00b98f952696b6bcdd0be34b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 65901 + timestamp: 1670387479735 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/opusfile-0.12-hf55b2d5_2.conda + sha256: a0ffa8054df68fad5f3533338557c7b985480ee3cf39f0e251ee6b03ff6896cf + md5: a9a71d77aec174e4532f91f560bc413b + depends: + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 91662 + timestamp: 1673436651852 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/opusfile-0.12-h5643135_2.conda + sha256: 108dbee936a8e3c21d2aa5618326343844df8f1fe14067c4dc5a731d7945ecc0 + md5: e34e472ae04beeb642c5e937a2aeeebf + depends: + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - openssl >=3.0.7,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 80128 + timestamp: 1670387790769 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + sha256: e9f4b912e48514771d477f2ee955f59d4ff4ef799c3d4d16e4d0f335ce91df67 + md5: 94022de9682cb1a0bb18a99cbc3541b3 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 884590 + timestamp: 1723488793100 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 + md5: 147c83e5e44780c7492998acbacddf52 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 618973 + timestamp: 1723488853807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 381072 + timestamp: 1733698987122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + sha256: 289c88d26530e427234adf7a8eb11e762d2beaf3c0a337c1c9887f60480e33e1 + md5: 95689fc369832398e82d17c56ff5df8a + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 288697 + timestamp: 1733700860569 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 201076 + timestamp: 1733699127167 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h7c63dc7_9.conda + sha256: c09ae032d0303abfea34c0957834538b48133b0431283852741ed3e0f66fdb36 + md5: 893f2c33af6b03cfd04820a8c31f5798 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 115512 + timestamp: 1693868383 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portaudio-19.6.0-h5c6c0ed_9.conda + sha256: a73e31c5fe9d717cd42470b394018f4e48eed4a439b9371d2c6d380c86aed591 + md5: ab049f8223bccc6f621975beaa75c624 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 118203 + timestamp: 1693868376750 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/portaudio-19.6.0-h13dd4ca_9.conda + sha256: 5ff2b55d685c29dfe632ef856796a4b862305088543d4982f0b807e8d9bb756e + md5: d325d46394b6c46d15718c855fb20b4a + depends: + - libcxx >=15.0.7 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 78863 + timestamp: 1693868663440 +- conda: https://conda.anaconda.org/conda-forge/linux-64/portmidi-2.0.4-h7c63dc7_2.conda + sha256: f4e1245409e97b5b46e655ba301da5e9bc1d6ae64f5ae46004583dae31214868 + md5: 5b2518aa80f149ee6881f5ad959f5d59 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 43765 + timestamp: 1693881734349 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/portmidi-2.0.4-h5c6c0ed_2.conda + sha256: 64ed7bdebe45af7987f65402506fa5ad6f9fd339a93f8fe7a57c6bcce497022f + md5: 8ee28835da08f915cba9317fccb6396d + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 45266 + timestamp: 1693882668197 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/portmidi-2.0.4-h13dd4ca_2.conda + sha256: b948bea6ef3203d049997ca348ba0d751a3d891579388e53d323693b20896af6 + md5: fe77195a950275fe63e560b1b855e818 + depends: + - libcxx >=15.0.7 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 47319 + timestamp: 1693882007724 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pulseaudio-client-17.0-h729494f_0.conda + sha256: 209eac3123ee2c84a35401626941c4aa64e04e2c9854084ddeba6432c6078a41 + md5: f35f57712d5c2abca98c85a51a408bc1 + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 766184 + timestamp: 1705690164726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pygame-2.6.1-py312h4fcb14b_0.conda + sha256: 7a5582c3eed17d0223cbd79dfb25ebae1ec7f8b06eb550fb65e163adb5f1c75b + md5: 80c4be6aac23ad6dfc2aeca1b1ab7d1f + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 2984508 + timestamp: 1727636750824 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pygame-2.6.1-py312hb2c8110_0.conda + sha256: 347dc650cbcb5b25f632ae62c87357c15db79849ff582887f6910ae245dc7d4f + md5: f4a1a0e1e2a435699366317ffeabd1bc + depends: + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 2979554 + timestamp: 1727636776938 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pygame-2.6.1-py312hb14fe3b_0.conda + sha256: 78b91e7b4cee736829f96ec8445674d03b60c03cc51da6f74cac1a14286fe686 + md5: 3a2a4db46a57a51f36f4d79f9f9b6c97 + depends: + - __osx >=11.0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - libcxx >=17 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - portmidi >=2.0.4,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sdl2 >=2.30.7,<3.0a0 + - sdl2_image >=2.8.2,<3.0a0 + - sdl2_mixer >=2.6.3,<3.0a0 + - sdl2_ttf >=2.22.0,<3.0a0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 2932509 + timestamp: 1727636775263 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rav1e-0.6.6-he8a937b_2.conda + sha256: 91b3c1ced90d04ee2eded1f72cf3cbc19ff05a25e41876ef0758266a5bab009f + md5: 77d9955b4abddb811cb8ab1aa7d743e4 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 15423721 + timestamp: 1694329261357 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rav1e-0.6.6-h1d8f897_2.conda + sha256: 093f21277dc5763cf0397e016e8291c2b796926ebbb173428dc9cdf5d012f328 + md5: 12c850a42b1ad1ed46a284a93959ee6a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 14347236 + timestamp: 1694329141875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rav1e-0.6.6-h69fbcac_2.conda + sha256: be6174970193cb4d0ffa7d731a93a4c9542881dbc7ab24e74b460ef312161169 + md5: e309ae86569b1cd55a0285fa4e939844 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 1526706 + timestamp: 1694329743011 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + sha256: c253ddeafdc46bb53cdac722d1305a94bbbd9905e6a112e295ce7bb9e7a2f7e7 + md5: 0d27110a2f613abc268e31b3c1d5fb4f + depends: + - __glibc >=2.17,<3.0.a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - sdl3 >=3.2.4,<4.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 513266 + timestamp: 1740516135153 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2-2.32.50-h7851d19_1.conda + sha256: d2c1d0baf85f3484fa8630f3067f7411c8abcb8fee0ad67342d82e706c59230e + md5: 83f2b36f187b0269471774983ecfa39f + depends: + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - sdl3 >=3.2.4,<4.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 523908 + timestamp: 1740516151246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2-2.32.50-h994913f_1.conda + sha256: 0a6ad048f2f311bebc05fc7a31d26373b693949ad0887edf48909b0acb849b5e + md5: ff589d08171ffeb5867e9c6a68ec913d + depends: + - __osx >=11.0 + - libcxx >=18 + - sdl3 >=3.2.4,<4.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 493998 + timestamp: 1740516182244 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_image-2.8.2-h06ee604_1.conda + sha256: f18184e016e2e57306d1540dea584d38f4617d7ddb6aad4af6b5f21c52fa39ea + md5: 65e113270b460dcdfc4dc0a80bb3d11c + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 152110 + timestamp: 1716857107234 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_image-2.8.2-hd95cb85_1.conda + sha256: 8bdd72e4789616b0db5fc8e756a4156d3bd7fd35cf96c1cb892d9f6bff3f6508 + md5: 45fbcda052d64b07fa601d965a41cb69 + depends: + - libavif16 >=1.0.4,<2.0a0 + - libgcc-ng >=12 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libstdcxx-ng >=12 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 151138 + timestamp: 1716858240454 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_image-2.8.2-h376e2e1_1.conda + sha256: 8c385478a7b6a6e34b3b3f3d48ed48f504698544987ad331f03a7b43b11d689a + md5: 247d2c5a873901ef51f378c69a2c708e + depends: + - __osx >=11.0 + - libavif16 >=1.0.4,<2.0a0 + - libcxx >=16 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - sdl2 >=2.30.2,<3.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 118041 + timestamp: 1716857215118 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_mixer-2.6.3-h8830914_1.conda + sha256: c3e99e222b091f26cfd1d6be22c5a2973df9e7caa020262f9d9523f340344a95 + md5: 1a2b60be4d860a0c419a87176c85c3ad + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 202966 + timestamp: 1695761744535 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_mixer-2.6.3-h422cae6_1.conda + sha256: 8fa4580bddd4d33f5fbddf5c54873613a7f8fcd9f781656fbf9fd1b27975b196 + md5: 75e56f84030bd1244d8bff3c55e8418e + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 238285 + timestamp: 1695761803447 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_mixer-2.6.3-h4fe3bdc_1.conda + sha256: fcaaf1b589aed11498f5b9735b996fb92ff18e4673a4c804bbfa28eb00264e06 + md5: b92222911d46f08faa583df51191bd7f + depends: + - fluidsynth >=2.3.4,<2.4.0a0 + - libcxx >=15.0.7 + - libflac >=1.4.3,<1.5.0a0 + - libmad >=0.15.1b,<0.16.0a0 + - libogg >=1.3.4,<1.4.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + - opusfile >=0.12,<0.13.0a0 + - sdl2 >=2.28.3,<3.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 188504 + timestamp: 1695762176058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2_ttf-2.24.0-h287479f_0.conda + sha256: 431d19b666db6e7a4f09c37c43c83f115176a006b2ac321853ca26bee888c519 + md5: bccd5b74eb55a523dfcc66b857555714 + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.10,<3.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 61954 + timestamp: 1736117956977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl2_ttf-2.24.0-hb1608df_0.conda + sha256: f9ee162a8efbd9cb0131500c57807e470b95f454aedb921dbf5960176b505ee4 + md5: 63b580a2a1005d91ffcb06a7e58d75f8 + depends: + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - sdl2 >=2.30.10,<3.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 55411 + timestamp: 1736119336293 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl2_ttf-2.24.0-h443c5de_0.conda + sha256: 5dc56fd1de51dec2f7b63b1a9069ab35ab0494d9cd5af164ab0019cbd9564cf6 + md5: 3cf5cf83deccb663b4e932d3d4b28f57 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - sdl2 >=2.30.10,<3.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 45429 + timestamp: 1736118165229 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + sha256: d19f33b8c73cf461698b3f6d81aa354aed68d50f8d64f72c0cccc507d183803c + md5: c0d92f268209e0a0fd27954a5667c11d + depends: + - __glibc >=2.17,<3.0.a0 + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 1728090 + timestamp: 1739801388543 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sdl3-3.2.4-h9cc03ad_0.conda + sha256: af6e96ddbf53a52f06714b715851f4cc0a684e26011da93974525535cc3a1da7 + md5: ecc9ec84f3a1d4d903a12d8b5c68e077 + depends: + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux + license: Zlib + size: 1655503 + timestamp: 1739553425173 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sdl3-3.2.4-he842692_0.conda + sha256: a9ab414a0432f256e4643f87aa97eaef31778990e7004d4e6dcf5a7a59c2047a + md5: 09a67fad3bcd67851f14082d80fe9b51 + depends: + - __osx >=11.0 + - dbus >=1.13.6,<2.0a0 + - libcxx >=18 + - libusb >=1.0.27,<2.0a0 + arch: arm64 + platform: osx + license: Zlib + size: 1258052 + timestamp: 1739553733611 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + sha256: 01ae1e86f79e05b9e687ef3b963e7f4f8a7554ac9f5af4dc1e3dc11ed79548b2 + md5: d86fc7eb811593abc06b328d3d72c001 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2746763 + timestamp: 1740096577511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-3.0.0-h5ad3122_0.conda + sha256: dd730fe6914a748f2466ac077f3b5b219fec4e49b9e05454af856e42ffe46c58 + md5: 65e68986e59b0e1272af76e6356828a9 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 1920727 + timestamp: 1740099395955 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-3.0.0-h8ab69cd_0.conda + sha256: 94802f002ec504c4a8a8dc5bb59d992a53eaa41379d7258a409939f9bb84547d + md5: 419e4ba326a85ce687a6b038e442c744 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 1447364 + timestamp: 1740096672763 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 + md5: 0a732427643ae5e0486a727927791da1 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 321561 + timestamp: 1724530461598 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda + sha256: 71c591803459e1f68f9ad206a4f2fa3971147502bad8791e94fd18d8362f8ce6 + md5: 2661f9252065051914f1cdf5835e7430 + depends: + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 324815 + timestamp: 1724530528414 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 + md5: f725c7425d6d7c15e31f3b99a88ea02f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 389475 + timestamp: 1727840188958 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda + sha256: b3f09cc99b6b7707aa8812bbc7556fd431999ad3a48292e4ff82335b5fda976c + md5: a809b8e3776fbc05696c82f8cf6f5a92 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 391011 + timestamp: 1727840308426 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 + md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 60433 + timestamp: 1734229908988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 + md5: 4c3e9fab69804ec6077697922d70c6e2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 27198 + timestamp: 1734229639785 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + sha256: 2749a32a00ccd8feaab6039d7848ed875880c13d3b2601afd1788600ce5f9075 + md5: 3983c253f53f67a9d8710fc96646950f + depends: + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 28061 + timestamp: 1734232077988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + sha256: a0e7fca9e341dc2455b20cd320fc1655e011f7f5f28367ecf8617cccd4bb2821 + md5: b6eb6d0cb323179af168df8fe16fb0a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 835157 + timestamp: 1738613163812 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.11-hca56bd8_0.conda + sha256: 351ce88b3c2df30520721d45e3d32127a0f7f406be234c25a224ed46f082d2e5 + md5: b4f818a0a4e60cffe755381166c82888 + depends: + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 864226 + timestamp: 1738613196126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda + sha256: c5d3692520762322a9598e7448492309f5ee9d8f3aff72d787cf06e77c42507f + md5: f2054759c2203d12d0007005e1f1296d + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 34596 + timestamp: 1730908388714 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + sha256: 8e216b024f52e367463b4173f237af97cf7053c77d9ce3e958bc62473a053f71 + md5: bd1e86dd8aa3afd78a4bfdb4ef918165 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 50746 + timestamp: 1727754268156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 + md5: 78f8715c002cc66991d7c11e3cf66039 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20289 + timestamp: 1727796500830 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda + sha256: ffd77ee860c9635a28cfda46163dcfe9224dc6248c62404c544ae6b564a0be1f + md5: ae2c2dd0e2d38d249887727db2af960e + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 33649 + timestamp: 1734229123157 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + sha256: 58e8fc1687534124832d22e102f098b5401173212ac69eb9fd96b16a3e2c8cb2 + md5: 303f7a0e9e0cd7d250bb6b952cecda90 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14412 + timestamp: 1727899730073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_1.conda + sha256: 532d3623961e34c53aba98db2ad0a33b7a52ff90d6960e505fb2d2efc06bb7da + md5: 02e4e2fa41a6528afba2e54cbc4280ff + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 567419 + timestamp: 1740255350233 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.7-hbcf94c1_1.conda + sha256: a8e9a9e19ec3778594d9746e308cdba096f3019c0c0a62f552d0d299b35c343f + md5: d98196f3502425e14f82bdfc8eb4ae27 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 550364 + timestamp: 1740255370714 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_1.conda + sha256: f49bbeeb3a8ead81920e6c695fff1260cbd221e2cfcdf9fb34207260fbd60816 + md5: 66e5c4b02aa97230459efdd4f64c8ce6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 399981 + timestamp: 1740255382232 diff --git a/examples/life/mojoproject.toml b/examples/mojo/life/mojoproject.toml similarity index 100% rename from examples/life/mojoproject.toml rename to examples/mojo/life/mojoproject.toml diff --git a/examples/life/test/test_gridv1.mojo b/examples/mojo/life/test/test_gridv1.mojo similarity index 100% rename from examples/life/test/test_gridv1.mojo rename to examples/mojo/life/test/test_gridv1.mojo diff --git a/examples/life/test/test_gridv2.mojo b/examples/mojo/life/test/test_gridv2.mojo similarity index 100% rename from examples/life/test/test_gridv2.mojo rename to examples/mojo/life/test/test_gridv2.mojo diff --git a/examples/lit.cfg.py b/examples/mojo/lit.cfg.py similarity index 91% rename from examples/lit.cfg.py rename to examples/mojo/lit.cfg.py index 1c3516870d..f4bc0fc233 100644 --- a/examples/lit.cfg.py +++ b/examples/mojo/lit.cfg.py @@ -30,15 +30,15 @@ # No RUN: directive, just bare examples "hello_interop.mojo", "matmul.mojo", -] + [path.name for path in os.scandir("examples") if path.is_dir()] +] + [path.name for path in os.scandir("../examples/mojo") if path.is_dir()] # Have the examples run in the build directory. # The `run-examples.sh` script creates the build directory. -build_root = Path.cwd().parent / "build" +build_root = Path.cwd().parent.parent / "mojo" / "build" # Execute the examples inside this part of the build # directory to avoid polluting the source tree. -config.test_exec_root = build_root / "examples" +config.test_exec_root = build_root / "examples" / "mojo" # test_source_root: The root path where tests are located. config.test_source_root = Path(__file__).parent.resolve() diff --git a/examples/mojo/magic.lock b/examples/mojo/magic.lock new file mode 100644 index 0000000000..a425fa05de --- /dev/null +++ b/examples/mojo/magic.lock @@ -0,0 +1,2185 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 + md5: a502d7aad449a1206efb366d6a12c52d + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 8065890 + timestamp: 1707225944355 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py311h69ead2a_0.conda + sha256: 88800a1d9d11c2fccab09d40d36f7001616f5119eaf0ec86186562f33564e651 + md5: 3fd00dd400c8d3f9da12bf33061dd28d + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7234391 + timestamp: 1707225781489 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + sha256: 160a52a01fea44fe9753a2ed22cf13d7b55c8a89ea0b8738546fdbf4795d6514 + md5: 3160b93669a0def35a7a8158ebb33816 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6652352 + timestamp: 1707226297967 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 30624804 + timestamp: 1733409665928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.11.11-h1683364_1_cpython.conda + build_number: 1 + sha256: b39a2253510b26213093cb29e27722cb33782aec213c020dfd17cd74d58f68e7 + md5: 7e8786cbe7b83e7011e681a4780c9b7f + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 15234582 + timestamp: 1733407838276 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + build_number: 1 + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Python-2.0 + size: 14647146 + timestamp: 1733409012105 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de + md5: 139a8d40c8a2f430df31048949e450de + constrains: + - python 3.11.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6211 + timestamp: 1723823324668 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 76974c2732919ace87b5f3a634eac93fed6900d557fcae0575787ec0a33c370e + md5: c2078141f21872cc34d9305123ba08f2 + constrains: + - python 3.11.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6300 + timestamp: 1723823316891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a + md5: 3b855e3734344134cb56c410f729c340 + constrains: + - python 3.11.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6308 + timestamp: 1723823096865 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + sha256: bd6309ef4629744aaaccd9b33d6389dfe879e9864386137e6e4ecc7e1b9ed0f3 + md5: 52457fbaa0aef8136d5dd7bb8a36db9e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 392547 + timestamp: 1738271109731 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py311h826da9f_0.conda + sha256: 09783a354a64324ed363a3c9de0f98d088f74f009d1a6fdd263c3758c4924992 + md5: 919dc1bfa979c20c6358f06e4ee8529f + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 386832 + timestamp: 1738273148939 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + sha256: 29255e5ca9f0b50d551fce4d5b7745fa11b4e672418a6d88a4c3f1a974dd4e44 + md5: 4c5daee5a983fb515460a2714b612126 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 370170 + timestamp: 1738271259321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + sha256: 1c7b8a24296bf1309f866d363a1152a796d495f97a87d0c6f35b845e6c153250 + md5: 4b2fa94e6d42231ffee6707dfe578915 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hf886319_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19473 + timestamp: 1735628355599 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h7028846_10.conda + sha256: a8b4437185e91d858566be18830fe93148a6335005349db08f60859c4ac413ad + md5: 64c3bcdf9faa00799dd2ed3f16044c26 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311h5c441b1_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19719 + timestamp: 1735628704628 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + sha256: 16826ce65b4a391990fa85dd2af7d0cd98549be9e993181f18e6d633185a0bd9 + md5: 4b55d377c0ba17934ab1515b608b8276 + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hb1a73f2_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19753 + timestamp: 1735628583443 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + sha256: 6d92d183dbe714d2b2b042542b36e1a875f307c83bde4324f24a6a1ea62400b6 + md5: 90c0c6f0d4d58d2383373e3ab7bc4d19 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2350779 + timestamp: 1735627954130 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py311h5c441b1_10.conda + sha256: 27f130942401ad16fc41417747cdc31cb2e579d8586335ddae7ee03b156ab3d8 + md5: df5020e8701d1a3eccfb5740c1e7af23 + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2516036 + timestamp: 1735628059861 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + sha256: 877e5831eb93d1b18c2218284806d8e6fb623a484c368bb0de785ca8586d97bf + md5: 2c13a5b72d87bad8a5af1f4b100e6a36 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2498193 + timestamp: 1735628323682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 855653 + timestamp: 1732616048886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py311h5487e9b_0.conda + sha256: 0619169eb95f8d7285dd267be3559d3f71af071954792cdd9591a90602992cee + md5: fe331d12b7fccca2348a114c4742a0e0 + depends: + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 859892 + timestamp: 1732616872562 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 858954 + timestamp: 1732616142626 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/mandelbrot.mojo b/examples/mojo/mandelbrot.mojo similarity index 100% rename from examples/mandelbrot.mojo rename to examples/mojo/mandelbrot.mojo diff --git a/examples/matmul.mojo b/examples/mojo/matmul.mojo similarity index 100% rename from examples/matmul.mojo rename to examples/mojo/matmul.mojo diff --git a/examples/mojoproject.toml b/examples/mojo/mojoproject.toml similarity index 100% rename from examples/mojoproject.toml rename to examples/mojo/mojoproject.toml diff --git a/examples/nbody.mojo b/examples/mojo/nbody.mojo similarity index 100% rename from examples/nbody.mojo rename to examples/mojo/nbody.mojo diff --git a/examples/operators/README.md b/examples/mojo/operators/README.md similarity index 100% rename from examples/operators/README.md rename to examples/mojo/operators/README.md diff --git a/examples/mojo/operators/magic.lock b/examples/mojo/operators/magic.lock new file mode 100644 index 0000000000..6014677668 --- /dev/null +++ b/examples/mojo/operators/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/operators/main.mojo b/examples/mojo/operators/main.mojo similarity index 100% rename from examples/operators/main.mojo rename to examples/mojo/operators/main.mojo diff --git a/examples/operators/mojoproject.toml b/examples/mojo/operators/mojoproject.toml similarity index 100% rename from examples/operators/mojoproject.toml rename to examples/mojo/operators/mojoproject.toml diff --git a/examples/operators/my_complex.mojo b/examples/mojo/operators/my_complex.mojo similarity index 100% rename from examples/operators/my_complex.mojo rename to examples/mojo/operators/my_complex.mojo diff --git a/examples/operators/test_my_complex.mojo b/examples/mojo/operators/test_my_complex.mojo similarity index 100% rename from examples/operators/test_my_complex.mojo rename to examples/mojo/operators/test_my_complex.mojo diff --git a/examples/pymatmul.py b/examples/mojo/pymatmul.py similarity index 100% rename from examples/pymatmul.py rename to examples/mojo/pymatmul.py diff --git a/examples/reduce.mojo b/examples/mojo/reduce.mojo similarity index 100% rename from examples/reduce.mojo rename to examples/mojo/reduce.mojo diff --git a/examples/run-examples.sh b/examples/mojo/run-examples.sh similarity index 65% rename from examples/run-examples.sh rename to examples/mojo/run-examples.sh index 30bc2be5fc..323239e1a6 100755 --- a/examples/run-examples.sh +++ b/examples/mojo/run-examples.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# ===----------------------------------------------------------------------=== # -# Copyright (c) 2024, Modular Inc. All rights reserved. +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. # # Licensed under the Apache License v2.0 with LLVM Exceptions: # https://llvm.org/LICENSE.txt @@ -10,15 +10,15 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -# ===----------------------------------------------------------------------=== # +##===----------------------------------------------------------------------===## set -euo pipefail SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) -REPO_ROOT="${SCRIPT_DIR}"/../ -EXAMPLES_DIR="${REPO_ROOT}"/examples +REPO_ROOT="${SCRIPT_DIR}"/../../ +EXAMPLES_DIR="${REPO_ROOT}"/examples/mojo -BUILD_DIR="${REPO_ROOT}"/build +BUILD_DIR="${REPO_ROOT}"/mojo/build mkdir -p "${BUILD_DIR}" # Run the examples using `lit`. diff --git a/examples/simple_interop.py b/examples/mojo/simple_interop.py similarity index 100% rename from examples/simple_interop.py rename to examples/mojo/simple_interop.py diff --git a/examples/mojo/testing/.gitattributes b/examples/mojo/testing/.gitattributes new file mode 100644 index 0000000000..8f61a8e774 --- /dev/null +++ b/examples/mojo/testing/.gitattributes @@ -0,0 +1,2 @@ +# SCM syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/examples/testing/.gitignore b/examples/mojo/testing/.gitignore similarity index 100% rename from examples/testing/.gitignore rename to examples/mojo/testing/.gitignore diff --git a/examples/testing/README.md b/examples/mojo/testing/README.md similarity index 100% rename from examples/testing/README.md rename to examples/mojo/testing/README.md diff --git a/examples/mojo/testing/magic.lock b/examples/mojo/testing/magic.lock new file mode 100644 index 0000000000..6014677668 --- /dev/null +++ b/examples/mojo/testing/magic.lock @@ -0,0 +1,2182 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/examples/testing/mojoproject.toml b/examples/mojo/testing/mojoproject.toml similarity index 100% rename from examples/testing/mojoproject.toml rename to examples/mojo/testing/mojoproject.toml diff --git a/examples/testing/src/example.mojo b/examples/mojo/testing/src/example.mojo similarity index 100% rename from examples/testing/src/example.mojo rename to examples/mojo/testing/src/example.mojo diff --git a/examples/testing/src/my_math/__init__.mojo b/examples/mojo/testing/src/my_math/__init__.mojo similarity index 100% rename from examples/testing/src/my_math/__init__.mojo rename to examples/mojo/testing/src/my_math/__init__.mojo diff --git a/examples/testing/src/my_math/utils.mojo b/examples/mojo/testing/src/my_math/utils.mojo similarity index 100% rename from examples/testing/src/my_math/utils.mojo rename to examples/mojo/testing/src/my_math/utils.mojo diff --git a/examples/testing/test/my_math/test_dec.mojo b/examples/mojo/testing/test/my_math/test_dec.mojo similarity index 100% rename from examples/testing/test/my_math/test_dec.mojo rename to examples/mojo/testing/test/my_math/test_dec.mojo diff --git a/examples/testing/test/my_math/test_inc.mojo b/examples/mojo/testing/test/my_math/test_inc.mojo similarity index 100% rename from examples/testing/test/my_math/test_inc.mojo rename to examples/mojo/testing/test/my_math/test_inc.mojo diff --git a/examples/notebooks/.gitignore b/examples/notebooks/.gitignore new file mode 100644 index 0000000000..eb804ba88a --- /dev/null +++ b/examples/notebooks/.gitignore @@ -0,0 +1,3 @@ +roberta/ +roberta.torchscript +onnx diff --git a/examples/notebooks/README.md b/examples/notebooks/README.md new file mode 100644 index 0000000000..b2c895bb95 --- /dev/null +++ b/examples/notebooks/README.md @@ -0,0 +1,68 @@ +# MAX Jupyter notebooks + +This page explains how to get started with MAX example notebooks, and this +repo directory contains notebooks that demonstrate some of MAX features. + +If you're not familiar with Jupyter notebooks, they're files that allow you to +create documents with live code, equations, visualizations, and explanatory +text. They're basically documents with executable code blocks, making them +great for sharing code experiments and programming tutorials. + +## Get started in VS Code + +Visual Studio Code is a great environment for programming with Jupyter notebooks. +Especially if you're developing with MAX on a remote system, using VS +Code is ideal because it allows you to edit and interact with notebooks on the +remote machine where you've installed MAX. + +All you need is MAX (via Magic) and the Jupyter VS Code extension: + +1. [Install Magic](https://docs.modular.com/magic). + +2. Install [Visual Studio Code](https://code.visualstudio.com/) and the + [Jupyter extension](https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter). + +3. Open any `.ipynb` file in this repo and start running the code. + +## Get started with JupyterLab + +You can also run MAX notebooks in a local instance of JupyterLab. The following +is just a quick setup guide for Linux users, but it might not work with your +system (these instructions don't support remote access to the JupyterLab). For +more details about using JupyterLab, see the complete [JupyterLab installation +guide](https://jupyterlab.readthedocs.io/en/latest/getting_started/installation.html). + +### 1. Launch JupyterLab + +You can use either Magic or conda. + +#### Using Magic + +If you have [`magic`](https://docs.modular.com/magic) you can run the following +command to launch JupyterLab from this directory: + +```sh +magic run jupyter lab +``` + +After a moment, it will open a browser window with JupterLab running. + +#### Using conda + +Create a Conda environment, activate that enviroment, and install JupyterLab. + +``` sh +# Create a Conda environment if you don't have one +conda create -n max-repo +# Activate the environment +conda env update -n max-repo -f environment.yml --prune +# run JupyterLab +conda run -n max-repo jupyter lab +``` + +After a moment, it will open a browser window with JupterLab running. + +### 2. Run the .ipynb notebooks + +The left nav bar should show all the notebooks in this directory. +Open any `.ipynb` file and start running the code. diff --git a/examples/notebooks/gemma2b-python-onnx.ipynb b/examples/notebooks/gemma2b-python-onnx.ipynb new file mode 100644 index 0000000000..16423dcad6 --- /dev/null +++ b/examples/notebooks/gemma2b-python-onnx.ipynb @@ -0,0 +1,425 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using Gemma-2B with MAX Engine 🏎️ on CPU\n", + "\n", + "**In this notebook we will walk through an example of using [Gemma-2B](https://huggingface.co/google/gemma-2b) model with MAX Engine 🏎️ on CPU and float32. Check out the [roadmap](https://docs.modular.com/max/roadmap) for quantization and the GPU support.**\n", + "\n", + "The Gemma-2B Large Language Model (LLM) is a pretrained generative text model with 2 billion parameters. Generative text models generate the next token iteratively given a sequence of past tokens representing the input prompt plus already generated response tokens.\n", + "\n", + "Thus the underlying transformer model is invoked in each iteration of this loop until we reach the stopping condition (either the maximum number of generated tokens or a token designated as the end).\n", + "\n", + "\n", + "### Requirements\n", + "\n", + "1. Please make sure you have installed `max` as described in our [getting started](https://docs.modular.com/max/get-started/) guide\n", + "2. Valid [huggingface access token](https://huggingface.co/docs/hub/security-tokens)\n", + "3. Gemma-2b is a gated model. Make sure you have accepted the [terms of use](https://huggingface.co/google/gemma-2b) to be able to continue\n", + "4. **The model size is 13G**. Please make sure you have enough disk space to download the model and for the converted ONNX counterpart as we will use them later in this tutorial.\n", + "5. The runtime memory requirement is around **24G** at minimum (skipping the optional part 👇) and **50G** to run all the cells\n", + "\n", + "With all that, we install the required packages as follows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q torch --index-url https://download.pytorch.org/whl/cpu\n", + "!python3 -m pip install -q transformers onnx huggingface_hub" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Huggingface hub login" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import getpass\n", + "from huggingface_hub import login\n", + "\n", + "access_token = getpass.getpass('Enter your Hugging Face Access Token')\n", + "login(token=access_token)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vanilla transformers\n", + "\n", + "Let's first see how the model generates a response using the vanilla `transformers`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "import torch\n", + "from transformers import AutoTokenizer, AutoModelForCausalLM\n", + "\n", + "PROMPT = \"Why did the chicken cross the road?\"\n", + "hf_path = \"google/gemma-2b\"\n", + "hfmodel = AutoModelForCausalLM.from_pretrained(hf_path)\n", + "hftokenizer = AutoTokenizer.from_pretrained(hf_path)\n", + "hftokenizer.pad_token = hftokenizer.eos_token\n", + "\n", + "# Tokenize the text prompt\n", + "input_ids = hftokenizer(PROMPT, return_tensors=\"pt\", max_length=128, truncation=True)\n", + "\n", + "# Run generation\n", + "out_ids = hfmodel.generate(**input_ids, max_new_tokens=15, do_sample=False)\n", + "\n", + "# De-tokenize the generated response\n", + "response = hftokenizer.batch_decode(out_ids, skip_special_tokens=True)[0][len(PROMPT):]\n", + "print(\"Response:\", response)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next token generation\n", + "\n", + "Now that we see that the model works, let's try to decompose its `hfmodel.generate` method because we will encounter it later. We should be able to get the same output as before, but by only using `forward` method of the model.\n", + "\n", + "The code below is a simplified version of the actual loop you can find in the transformer's source code. It starts by initializing the current sequense to the given prompt and then generates 10 subsequent tokens - these tokens constitute the response of the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from time import time\n", + "from transformers.generation.logits_process import LogitsProcessorList\n", + "\n", + "logits_processor = LogitsProcessorList()\n", + "\n", + "time_start = time()\n", + "current_seq = input_ids.input_ids\n", + "N_TOKENS = 10\n", + "for idx in range(N_TOKENS):\n", + " # Run model's `forward` on the current sequence.\n", + " # 'logits' output would let us determine the next token for this sequence\n", + " outputs = hfmodel(current_seq, return_dict=True).logits\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + "time_finish = time()\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq, skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {N_TOKENS / (time_finish - time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convert to ONNX with optimum\n", + "\n", + "Great! We were able to see the same response now with using only `forward` method of our model. We're now ready to use MAX Engine 🏎️ inference.\n", + "To do that, we start by getting an ONNX version of the model. The easiest way to do it is to use HuggingFace `optimum` tool which you can install as follows.\n", + "At the moment of writing this notebook, optimum gemma support is unreleased and but is included in the upstream [here](https://github.com/huggingface/optimum/pull/1714)\n", + "which we can get as follows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q git+https://github.com/huggingface/optimum.git@e0cbf7dea2531603ecd0f36dfce0657baa4310ec" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then the conversion to ONNX. This part can take a while. Also please make sure you've enough disk space." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!optimum-cli export onnx --model \"google/gemma-2b\" \"./onnx/gemma-2b-onnx\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional: Examine the ONNX model\n", + "\n", + "**Caveat: 📢 if you want to run this 👇 part you will need around 50G of memory to be able to continue finishing the notebook. Otherwise, check out the included results below.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "import onnx\n", + "\n", + "onnxmodel = onnx.load(\"./onnx/gemma-2b-onnx/model.onnx\")\n", + "\n", + "def print_dims(tensor):\n", + " dims = []\n", + " for dim in tensor.type.tensor_type.shape.dim:\n", + " if dim.HasField(\"dim_value\"):\n", + " dims.append(String(dim.dim_value))\n", + " elif dim.HasField(\"dim_param\"):\n", + " dims.append(String(dim.dim_param))\n", + " print(onnx.TensorProto.DataType.Name(tensor.type.tensor_type.elem_type), end=\" \")\n", + " print(\"[\", \", \".join(dims), \"]\")\n", + "\n", + "print(\"=== Inputs ===\")\n", + "for input_tensor in onnxmodel.graph.input:\n", + " print(input_tensor.name, end=\": \")\n", + " print_dims(input_tensor)\n", + "\n", + "print(\"\\n=== Outputs ===\")\n", + "for output_tensor in onnxmodel.graph.output:\n", + " print(output_tensor.name, end=\": \")\n", + " print_dims(output_tensor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "=== Inputs ===\n", + "input_ids: INT64 [ batch_size, sequence_length ]\n", + "attention_mask: INT64 [ batch_size, past_sequence_length + 1 ]\n", + "position_ids: INT64 [ batch_size, sequence_length ]\n", + "past_key_values.0.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.0.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.1.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.1.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.2.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.2.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.3.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.3.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.4.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.4.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.5.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "past_key_values.5.value: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "\n", + "...\n", + "\n", + "=== Outputs ===\n", + "logits: FLOAT [ batch_size, sequence_length, 256000 ]\n", + "present.0.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.0.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.1.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.1.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.2.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.2.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.3.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.3.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.4.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.4.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.5.key: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "present.5.value: FLOAT [ batch_size, 1, past_sequence_length + 1, 256 ]\n", + "\n", + "...\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It might be quite surprising to see so many inputs and outputs in the model!\n", + "\n", + "\n", + "In short, we have the following inputs:\n", + "* input_ids\n", + "* position_ids\n", + "* attention_mask\n", + "* past_key_values\n", + "\n", + "And the outputs will be:\n", + "* logits\n", + "* present_key_value\n", + "\n", + "**Note** that since ONNX doesn't support dictionaries as a input/output type, the `key_value` is expanded into 18 pairs of individual tensors (18 is the number of attention layers). The number of KV heads is 1 and the size of each key/value vector is 256.\n", + "\n", + "```\n", + "past_key_values.0.key: FLOAT [ batch_size, 1, past_sequence_length, 256 ]\n", + "```\n", + "\n", + "\n", + "\n", + "In order to use this model we will need to slightly modify our glue code to correctly weave all these values from each iteration to the next.\n", + "Specifically, we will need to pass the `key_values` from previous iteration to the current (for the first iteration they are initializes as empty tensors).\n", + "We will also need to correctly fill in `position_ids` and `attention_mask` tensors and update them on each iteration. We will not get into all the details of how exactly all these tensors affect the model behavior and should be used - this is an extremely interesting topic, but it lays beyond the scope of this walkthrough." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MAX Engine 🏎️\n", + "\n", + "With that we're finally ready to use the MAX Engine 🏎️ for inference.\n", + "\n", + "The code modifications follows our previous approach and is quite minimal. All we need to do is to load the ONNX model (whch can take a while) into an `InferenceSession` object and instead of using the `hfmodel` we will need to use `maxmodel.execute`, and pack the input values into a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "from max import engine\n", + "# Create an InferenceSession and load the ONNX model\n", + "session = engine.InferenceSession()\n", + "maxmodel = session.load(\"./onnx/gemma-2b-onnx/model.onnx\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also quickly inspect the input and output metadata that match the ONNX version above" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for tensor in maxmodel.input_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')\n", + "\n", + "for tensor in maxmodel.output_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the how to get the response from our `maxmodel`. The token per second can be up to **2X** faster comparing to the PyTorch version. Note that this tutorial doesn't provide an accurate benchmark. For more, please check out our [performance dashboard](https://performance.modular.com/)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "inputs = {}\n", + "N_BATCH = 1\n", + "N_LAYERS = 18\n", + "N_HEADS = 1\n", + "KV_LEN = 256\n", + "# Initialize the additional layer to 0 for the first iteration:\n", + "for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + " inputs[f\"past_key_values.{i}.value\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + "\n", + "current_seq = input_ids.input_ids\n", + "\n", + "time_start = time()\n", + "for idx in range(N_TOKENS):\n", + " # Prepare inputs dictionary\n", + " inputs[\"input_ids\"] = current_seq.numpy()\n", + " inputs[\"position_ids\"] = torch.arange(inputs[\"input_ids\"].shape[1], dtype=torch.long).unsqueeze(0).numpy()\n", + " inputs[\"attention_mask\"] = torch.ones([1, inputs[\"past_key_values.0.key\"].shape[2] + inputs[\"input_ids\"].shape[1]], dtype=torch.int64).numpy()\n", + "\n", + " # Run the model with MAX engine\n", + " max_outputs = maxmodel.execute(**inputs)\n", + " outputs = torch.from_numpy(max_outputs[\"logits\"])\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + " # Update the KV cache for the next iteration\n", + " for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = max_outputs[f\"present.{i}.key\"]\n", + " inputs[f\"past_key_values.{i}.value\"] = max_outputs[f\"present.{i}.value\"]\n", + "\n", + "time_finish = time()\n", + "\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq.numpy(), skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {idx/(time_finish-time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is it! 🎉\n", + "\n", + "Serving an LLM has historically been not an easy task, but hopefully this example lifts the curtain on how this can be done. MAX Engine 🏎️ doesn't (yet) make this process easier, however, if you've already gone this path with ONNX or TorchScript, switching to MAX should be trivial and bring easy performance wins." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/notebooks/magic.lock b/examples/notebooks/magic.lock index a9ee6e08a6..274f502b9a 100644 --- a/examples/notebooks/magic.lock +++ b/examples/notebooks/magic.lock @@ -8,10 +8,6 @@ environments: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda @@ -19,75 +15,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -99,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda @@ -107,171 +66,96 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -279,33 +163,18 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/argon2-cffi-bindings-21.2.0-py312hb2c0f52_5.conda @@ -313,76 +182,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -394,7 +225,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda @@ -402,171 +233,96 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.23.1-py312he7a34ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -574,32 +330,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda @@ -608,76 +349,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda @@ -689,172 +392,98 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.50-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-11.0-py312hb9d441b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh31c8845_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda @@ -862,25 +491,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda packages: @@ -921,98 +539,6 @@ packages: license_family: BSD size: 23712 timestamp: 1650670790230 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda - sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 - md5: 296b403617bafa89df4971567af79013 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 19351 - timestamp: 1733332029649 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py312h178313f_0.conda - sha256: 2e817805e8a4fed33f23f116ff5649f8651af693328e9ed82d9d11a951338693 - md5: 8219afa093757bbe07b9825eb1973ed9 - depends: - - __glibc >=2.17,<3.0.a0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: x86_64 - platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 915358 - timestamp: 1734597073870 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py312hcc812fe_0.conda - sha256: f28e81e458d19df4ca0002f8a92d7f647fa25e8179887a8676801dfe44edb1f2 - md5: 11fa88136d9bf39d2136b2378f7c10be - depends: - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - libgcc >=13 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: aarch64 - platform: linux - license: MIT AND Apache-2.0 - license_family: Apache - size: 902422 - timestamp: 1734597104529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py312h998013c_0.conda - sha256: 446f078e7a7b892894d7f4851a278b7834ffb4f5632313646a55c3abe13690d4 - md5: c69c904691364cfb27d15aa7153e9c29 - depends: - - __osx >=11.0 - - aiohappyeyeballs >=2.3.0 - - aiosignal >=1.1.2 - - attrs >=17.3.0 - - frozenlist >=1.1.1 - - multidict >=4.5,<7.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yarl >=1.17.0,<2.0 - arch: arm64 - platform: osx - license: MIT AND Apache-2.0 - license_family: Apache - size: 875711 - timestamp: 1734597277258 -- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 - md5: 1a3981115a398535dbe3f6d5faae3d36 - depends: - - frozenlist >=1.1.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 13229 - timestamp: 1734342253061 -- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 - md5: 2934f256a8acfe48f6ebb4fce6cde29c - depends: - - python >=3.9 - - typing-extensions >=4.0.0 - license: MIT - license_family: MIT - size: 18074 - timestamp: 1733247158254 - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 md5: 848d25bfbadf020ee4d4ba90e5668252 @@ -1137,2790 +663,1031 @@ packages: license_family: MIT size: 56370 timestamp: 1737819298139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda - sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 - md5: 9c500858e88df50af3cc883d194de78a +- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac + md5: 0a01c169f0ab0f91b26e77a3301fbfe4 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 108111 - timestamp: 1737509831651 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda - sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 - md5: 2630f030652970a5531e492f6b2a6dd3 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 112658 - timestamp: 1737509863269 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda - sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a - md5: 0abd67c0f7b60d50348fbb32fef50b65 + - python >=3.9 + - pytz >=2015.7 + license: BSD-3-Clause + license_family: BSD + size: 6938256 + timestamp: 1738490268466 +- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.13.3-pyha770c72_0.conda + sha256: 4ce42860292a57867cfc81a5d261fb9886fc709a34eca52164cc8bbf6d03de9f + md5: 373374a3ed20141090504031dc7b693e depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 92562 - timestamp: 1737509877079 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda - sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 - md5: 55a8561fdbbbd34f50f57d9be12ed084 + - python >=3.9 + - soupsieve >=1.2 + - typing-extensions + license: MIT + license_family: MIT + size: 145482 + timestamp: 1738740460562 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda + sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd + md5: f0b4c8e370446ef89797608d60a564b3 + depends: + - python >=3.9 + - webencodings + - python + constrains: + - tinycss >=1.1.0,<1.5 + license: Apache-2.0 AND MIT + size: 141405 + timestamp: 1737382993425 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda + sha256: 0aba699344275b3972bd751f9403316edea2ceb942db12f9f493b63c74774a46 + md5: a30e9406c873940383555af4c873220d + depends: + - bleach ==6.2.0 pyh29332c3_4 + - tinycss2 + license: Apache-2.0 AND MIT + size: 4213 + timestamp: 1737382993425 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - openssl >=3.3.1,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 47601 - timestamp: 1733991564405 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda - sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a - md5: 57ed2c445d7ef01d121b9bcea0522913 + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - libgcc >=13 - - openssl >=3.3.1,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 50036 - timestamp: 1733991581303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda - sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 - md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - openssl >=3.3.1,<4.0a0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 39925 - timestamp: 1733991649383 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda - sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 - md5: d7d4680337a14001b0e043e96529409b + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc-ng >=12 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 236574 - timestamp: 1733975453350 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda - sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab - md5: fef806a0f6de853670c746bbece01966 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 depends: - - libgcc >=13 + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 259031 - timestamp: 1733975520465 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda - sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a - md5: 145e5b4c9702ed279d7d68aaf096f77d + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 221863 - timestamp: 1733975576886 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda - sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b - md5: 3f4c1197462a6df2be6dc8241828fe93 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 19086 - timestamp: 1733991637424 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda - sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 - md5: 3a1421d12435df5b4c412cc4c8fac64d - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 19740 - timestamp: 1733991625201 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda - sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 - md5: a8b6c17732d14ed49d0e9b59c43186bc - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 18068 - timestamp: 1733991869211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda - sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 - md5: 9b3fb60fe57925a92f399bc3fc42eccf + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + noarch: python + sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 + md5: 9b347a7ec10940d3f7941ff6c460b551 + depends: + - cached_property >=1.5.2,<1.5.3.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4134 + timestamp: 1615209571450 +- conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 + md5: 576d629e47797577ab0f1b351297ef4a + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 11065 + timestamp: 1615209567874 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 depends: - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + - libffi >=3.4,<4.0a0 - libgcc >=13 - - libstdcxx >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 54003 - timestamp: 1734024480949 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda - sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 - md5: e0772c59af4243a9b2565baa5d79e5b6 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 - libgcc >=13 - - libstdcxx >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: Apache - size: 55207 - timestamp: 1734024546663 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda - sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d - md5: ba41238f8e653998d7d2f42e3a8db054 + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e depends: - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libcxx >=18 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: Apache-2.0 - license_family: Apache - size: 47078 - timestamp: 1734024749727 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda - sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 - md5: 5ce4df662d32d3123ea8da15571b6f51 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 197731 - timestamp: 1734008380764 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda - sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e - md5: 28f00aa7fd9556c4c461328cf146c20b - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 190586 - timestamp: 1734008442362 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda - sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 - md5: 495c93a4f08b17deb3c04894512330e6 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-compression >=0.3.0,<0.3.1.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 152983 - timestamp: 1734008451473 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda - sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 - md5: 9a063178f1af0a898526cc24ba7be486 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 157263 - timestamp: 1737207617838 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda - sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 - md5: 4e6771b45cb2b035c62d023dbf0dc000 - depends: - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - - s2n >=1.5.11,<1.5.12.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 160933 - timestamp: 1737207637279 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda - sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 - md5: d02e8f40ff69562903e70a1c6c48b009 - depends: - - __osx >=11.0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 136048 - timestamp: 1737207681224 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda - sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a - md5: 96c3e0221fa2da97619ee82faa341a73 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 194672 - timestamp: 1734025626798 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda - sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 - md5: 031ca33115d4b1eeb43f435d6215778c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 169516 - timestamp: 1734025167885 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda - sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd - md5: c072045a6206f88015d02fcba1705ea1 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 134371 - timestamp: 1734025379525 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda - sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 - md5: caafc32928a5f7f3f7ef67d287689144 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 115413 - timestamp: 1737558687616 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda - sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 - md5: e0a2869195f069db88b8932f5b00bee5 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 117875 - timestamp: 1737558720047 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda - sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 - md5: de65f5e4ab5020103fe70a0eba9432a0 - depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 98731 - timestamp: 1737558731831 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda - sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc - md5: dcd498d493818b776a77fbc242fbf8e4 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 55911 - timestamp: 1736535960724 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda - sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 - md5: a78928881c652facde2a13ec6e776f3c - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 58221 - timestamp: 1736536003041 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda - sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 - md5: e7b5498ac7b7ab921a907be38f3a8080 - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 49872 - timestamp: 1736536152332 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda - sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 - md5: 74e8c3e4df4ceae34aa2959df4b28101 - depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 72762 - timestamp: 1733994347547 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda - sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da - md5: 3bd35b0adab3d743f09e0252cc441d6b - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - libgcc >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 72154 - timestamp: 1733994384415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda - sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c - md5: e70e88a357a3749b67679c0788c5b08a - depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 70186 - timestamp: 1733994496998 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda - sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc - md5: 8a4e6fc8a3b285536202b5456a74a940 + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 353222 - timestamp: 1737565463079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda - sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d - md5: 875968ebffe992b68faf2caebbf32f02 - depends: - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 283812 - timestamp: 1737565480034 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda - sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 - md5: c9c034d3239bf25687ca4dd985007ecd + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 depends: - - __osx >=11.0 - - aws-c-auth >=0.8.1,<0.8.2.0a0 - - aws-c-cal >=0.8.1,<0.8.2.0a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-c-http >=0.9.2,<0.9.3.0a0 - - aws-c-io >=0.15.3,<0.15.4.0a0 - - aws-c-mqtt >=0.11.0,<0.11.1.0a0 - - aws-c-s3 >=0.7.9,<0.7.10.0a0 - - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 235976 - timestamp: 1737565563139 -- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda - sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 - md5: b775e9f46dfa94b228a81d8e8c6d8b1d + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - __glibc >=2.17,<3.0.a0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3144364 - timestamp: 1737576036746 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda - sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e - md5: e725d8fa77a6a5f38a78c5de914a5f40 - depends: - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3015109 - timestamp: 1737575993030 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda - sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c - md5: 156cfb45a1bb8cffc81e59047bb34f51 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af + md5: 74673132601ec2b7fc592755605f4c1b depends: - - __osx >=11.0 - - aws-c-common >=0.10.6,<0.10.7.0a0 - - aws-c-event-stream >=0.5.0,<0.5.1.0a0 - - aws-checksums >=0.2.2,<0.2.3.0a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 2874126 - timestamp: 1737577023623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda - sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a - md5: 0a8838771cc2e985cd295e01ae83baf1 + - python >=3.9 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 12103 + timestamp: 1733503053903 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda + sha256: f88c3a7ff384d1726aea2cb2342cf67f1502915391860335c40ab81d7e381e30 + md5: 6be6dcb4bffd1d456bdad28341d507bd depends: - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 345117 - timestamp: 1728053909574 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda - sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 - md5: e0c3a906a41be769f0ae20ca3e31cfc0 + size: 2646757 + timestamp: 1737269937348 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda + sha256: ae9ce5415b25c74bea70224822b3c3b12d7d670dbf1f2d63b6995575e05af38b + md5: f54f7b0bad14e9bbba256a21238d2630 depends: - - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 338650 - timestamp: 1728055589907 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda - sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e - md5: f093a11dcf3cdcca010b20a818fcc6dc + size: 2583530 + timestamp: 1737269969753 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda + sha256: 0ba7ba5f5529bd9cf103d4684e2e9af8a7791a8732c3a0ac689f2d6f2223feca + md5: 92ebf61ce320b7060ead08666dbc9369 depends: - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: arm64 platform: osx license: MIT license_family: MIT - size: 294299 - timestamp: 1728054014060 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda - sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de - md5: 73f73f60854f325a55f1d31459f2ab73 + size: 2564438 + timestamp: 1737270030625 +- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda + sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 + md5: 9ce473d1d1be1cc3810856a48b3fab32 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 232351 - timestamp: 1728486729511 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda - sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 - md5: 94e73a7877743a85c57091d8afab2348 + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 14129 + timestamp: 1740385067843 +- conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be + md5: 961b3a227b437d82ad7054484cfa71b2 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 217132 - timestamp: 1728488096615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda - sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a - md5: d7b71593a937459f2d4b67e1a4727dc2 + - python >=3.6 + license: PSF-2.0 + license_family: PSF + size: 24062 + timestamp: 1615232388757 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 166907 - timestamp: 1728486882502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda - sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 - md5: 7eb66060455c7a47d9dcdbfa9f46579b + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 + md5: ef8b5fca76806159fc25b4f48d8737eb depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux + - python >=3.9 license: MIT license_family: MIT - size: 549342 - timestamp: 1728578123088 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda - sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 - md5: 221e1e5ecb2643e113f32b3229d5ba33 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 502934 - timestamp: 1728580241002 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda - sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 - md5: 704238ef05d46144dae2e6b5853df8bc + size: 28348 + timestamp: 1733569440265 +- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 438636 - timestamp: 1728578216193 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda - sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba - md5: 13de36be8de3ae3f05ba127631599213 + - cached-property >=1.3.0 + - python >=3.9,<4 + license: MPL-2.0 + license_family: MOZILLA + size: 16705 + timestamp: 1733327494780 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux + - python >=3.9 + - typing_extensions license: MIT license_family: MIT - size: 149312 - timestamp: 1728563338704 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda - sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 - md5: 793b1080ab2d958980f137a8643cd6e8 + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 license: MIT license_family: MIT - size: 140832 - timestamp: 1728565334900 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda - sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 - md5: 7a187cd7b1445afc80253bb186a607cc + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx + - python >=3.9 license: MIT license_family: MIT - size: 121278 - timestamp: 1728563418777 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda - sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 - md5: 7c1980f89dd41b097549782121a73490 + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e depends: - - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 287366 - timestamp: 1728729530295 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda - sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc - md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 - depends: - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 260547 - timestamp: 1728730924071 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda - sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d - md5: c49fbc5233fcbaa86391162ff1adef38 + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 depends: - - __osx >=11.0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 - - libcxx >=17 - arch: arm64 - platform: osx + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 license: MIT license_family: MIT - size: 196032 - timestamp: 1728729672889 -- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda - sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb - md5: 3e23f7db93ec14c80525257d8affac28 + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - python >=3.9 - - pytz >=2015.7 license: BSD-3-Clause license_family: BSD - size: 6551057 - timestamp: 1733236466015 -- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda - sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 - md5: a38b801f2bcc12af80c2e02a9e4ce7d9 + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c depends: - python >=3.9 - license: MIT - license_family: MIT - size: 18816 - timestamp: 1733771192649 -- conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda - sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f - md5: d48f7e9fdec44baf6d1da416fe402b04 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda + sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 + md5: c85c76dc67d75619a92f51dfbce06992 depends: - python >=3.9 - - soupsieve >=1.2 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.5.2,<6.5.3.0a0 + license: Apache-2.0 + license_family: APACHE + size: 33781 + timestamp: 1736252433366 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a + md5: b40131ab6a36ac2c09b7c57d4d3fbf99 + depends: + - __linux + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + size: 119084 + timestamp: 1719845605084 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda + sha256: 072534d4d379225b2c3a4e38bc7730b65ae171ac7f0c2d401141043336e97980 + md5: 9eb15d654daa0ef5a98802f586bb4ffc + depends: + - __osx + - appnope + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + size: 119568 + timestamp: 1719845667420 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.32.0-pyh907856f_0.conda + sha256: b1b940cfe85d5f0aaed83ef8c9f07ee80daa68acb05feeb5142d620472b01e0d + md5: 9de86472b8f207fb098c69daaad50e67 + depends: + - __unix + - pexpect >4.3 + - python >=3.10 + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + - python + license: BSD-3-Clause + license_family: BSD + size: 636676 + timestamp: 1738421264236 +- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a + depends: + - arrow >=0.15.0 + - python >=3.9 license: MIT license_family: MIT - size: 118042 - timestamp: 1733230951790 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyh29332c3_4.conda - sha256: a05971bb80cca50ce9977aad3f7fc053e54ea7d5321523efc7b9a6e12901d3cd - md5: f0b4c8e370446ef89797608d60a564b3 + size: 19832 + timestamp: 1733493720346 +- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 depends: + - parso >=0.8.3,<0.9.0 - python >=3.9 - - webencodings - - python - constrains: - - tinycss >=1.1.0,<1.5 license: Apache-2.0 AND MIT - size: 141405 - timestamp: 1737382993425 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.2.0-h82add2a_4.conda - sha256: 0aba699344275b3972bd751f9403316edea2ceb942db12f9f493b63c74774a46 - md5: a30e9406c873940383555af4c873220d + size: 843646 + timestamp: 1733300981994 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - - bleach ==6.2.0 pyh29332c3_4 - - tinycss2 - license: Apache-2.0 AND MIT - size: 4213 - timestamp: 1737382993425 -- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f + md5: cd170f82d8e5b355dfdea6adab23e4af + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 31573 + timestamp: 1733272196759 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 + md5: 6b51f7459ea4073eeb5057207e2e1e3d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 349867 - timestamp: 1725267732089 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d - md5: e1e9727063057168d95f27a032acd0a4 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 356878 - timestamp: 1725267878508 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d + license: BSD-3-Clause + license_family: BSD + size: 17277 + timestamp: 1725303032027 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda + sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc + md5: 2257c5f33024274faadf6a88a7d62807 depends: - - __osx >=11.0 - - libcxx >=17 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 339360 - timestamp: 1725268143995 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d - md5: 62ee74e96c5ebb0af99386de58cf9553 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 252783 - timestamp: 1720974456583 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb - md5: 56398c28220513b9ea13d7b450acfb20 - depends: - - libgcc-ng >=12 arch: aarch64 platform: linux - license: bzip2-1.0.6 - license_family: BSD - size: 189884 - timestamp: 1720974504976 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 - md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: bzip2-1.0.6 + license: BSD-3-Clause license_family: BSD - size: 122909 - timestamp: 1720974522888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 - md5: e2775acf57efd5af15b8e3d1d74d72d3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 206085 - timestamp: 1734208189009 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe - md5: 356da36f35d36dcba16e43f1589d4e39 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 215979 - timestamp: 1734208193181 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f - md5: c1c999a38a4303b29d75c636eaa13cf9 + size: 17821 + timestamp: 1725303138276 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 + md5: 80f403c03290e1662be03e026fb5f8ab depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 179496 - timestamp: 1734208291879 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda - sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 - md5: 19f3a56f68d2fd06c516076bff482c52 - arch: x86_64 - platform: linux - license: ISC - size: 158144 - timestamp: 1738298224464 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda - sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec - md5: 462cb166cd2e26a396f856510a3aff67 - arch: aarch64 - platform: linux - license: ISC - size: 158290 - timestamp: 1738299057652 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda - sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 - md5: 3569d6a9141adc64d2fe4797f3289e06 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 arch: arm64 platform: osx - license: ISC - size: 158425 - timestamp: 1738298167688 -- conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - noarch: python - sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 - md5: 9b347a7ec10940d3f7941ff6c460b551 - depends: - - cached_property >=1.5.2,<1.5.3.0a0 - license: BSD-3-Clause - license_family: BSD - size: 4134 - timestamp: 1615209571450 -- conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 - md5: 576d629e47797577ab0f1b351297ef4a - depends: - - python >=3.6 license: BSD-3-Clause license_family: BSD - size: 11065 - timestamp: 1615209567874 -- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda - sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad - md5: 6feb87357ecd66733be3279f16a8c400 + size: 17865 + timestamp: 1725303130815 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 depends: + - attrs >=22.2.0 + - importlib_resources >=1.4.0 + - jsonschema-specifications >=2023.03.6 + - pkgutil-resolve-name >=1.3.10 - python >=3.9 - license: ISC - size: 161642 - timestamp: 1734380604767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 - depends: - - __glibc >=2.17,<3.0.a0 - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 294403 - timestamp: 1725560714366 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea - depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux + - referencing >=0.28.4 + - rpds-py >=0.7.1 license: MIT license_family: MIT - size: 312892 - timestamp: 1725561779888 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e + size: 74256 + timestamp: 1733472818764 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx + - python >=3.9 + - referencing >=0.31.0 license: MIT license_family: MIT - size: 281206 - timestamp: 1725560813378 -- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda - sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b - md5: e83a31202d1c0a000fce3e9cf3825875 + size: 16170 + timestamp: 1733493624968 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 depends: - - python >=3.9 + - fqdn + - idna + - isoduration + - jsonpointer >1.13 + - jsonschema >=4.23.0,<4.23.1.0a0 + - rfc3339-validator + - rfc3986-validator >0.1.0 + - uri-template + - webcolors >=24.6.0 license: MIT license_family: MIT - size: 47438 - timestamp: 1735929811779 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab - md5: f22f4d4970e09d68a10b922cbb0408d3 + size: 7135 + timestamp: 1733472820035 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 depends: - - __unix + - importlib-metadata >=4.8.3 + - jupyter_server >=1.1.2 - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 84705 - timestamp: 1734858922844 -- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 - md5: 962b9857ee8e7018c22f2776ffa0b2d7 + size: 55221 + timestamp: 1733493006611 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 27011 - timestamp: 1733218222191 -- conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda - sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af - md5: 74673132601ec2b7fc592755605f4c1b + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 depends: - - python >=3.9 + - __unix + - platformdirs >=2.5 + - python >=3.8 - traitlets >=5.3 license: BSD-3-Clause license_family: BSD - size: 12103 - timestamp: 1733503053903 -- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda - sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f - md5: 3e087f072ce03c43a9b60522f5d0ca2f - depends: - - aiohttp - - dill >=0.3.0,<0.3.8 - - fsspec >=2021.11.1 - - huggingface_hub >=0.14.0,<1.0.0 - - importlib-metadata - - multiprocess - - numpy >=1.17 + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 + md5: f56000b36f09ab7533877e695e4e8cb0 + depends: + - jsonschema-with-format-nongpl >=4.18.0 - packaging - - pandas - - pyarrow >=8.0.0 - - python >=3.8.0 - - python-xxhash - - pyyaml >=5.1 - - requests >=2.19.0 - - tqdm >=4.62.1 - license: Apache-2.0 - license_family: Apache - size: 347303 - timestamp: 1691593908658 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.12-py312h2ec8cdc_0.conda - sha256: f88c3a7ff384d1726aea2cb2342cf67f1502915391860335c40ab81d7e381e30 - md5: 6be6dcb4bffd1d456bdad28341d507bd - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 2646757 - timestamp: 1737269937348 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.12-py312h6f74592_0.conda - sha256: ae9ce5415b25c74bea70224822b3c3b12d7d670dbf1f2d63b6995575e05af38b - md5: f54f7b0bad14e9bbba256a21238d2630 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 2583530 - timestamp: 1737269969753 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.12-py312hd8f9ff3_0.conda - sha256: 0ba7ba5f5529bd9cf103d4684e2e9af8a7791a8732c3a0ac689f2d6f2223feca - md5: 92ebf61ce320b7060ead08666dbc9369 - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 2564438 - timestamp: 1737270030625 -- conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda - sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 - md5: d622d8d7ee8868870f9cbe259f381181 - depends: - - python >=3.9 - license: BSD-2-Clause - license_family: BSD - size: 14068 - timestamp: 1733236549190 -- conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be - md5: 961b3a227b437d82ad7054484cfa71b2 - depends: - - python >=3.6 - license: PSF-2.0 - license_family: PSF - size: 24062 - timestamp: 1615232388757 -- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda - sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 - md5: 0cef44b1754ae4d6924ac0eef6b9fdbe - depends: - - python >=3.9 - - wrapt <2,>=1.10 - license: MIT - license_family: MIT - size: 14382 - timestamp: 1737987072859 -- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda - sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 - md5: 5e4f3466526c52bc9af2d2353a1460bd - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 87553 - timestamp: 1690101185422 -- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda - sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 - md5: 5fbd60d61d21b4bd2f9d7a48fe100418 - depends: - - python >=3.9,<4.0.0 - - sniffio - constrains: - - aioquic >=1.0.0 - - wmi >=1.5.1 - - httpx >=0.26.0 - - trio >=0.23 - - cryptography >=43 - - httpcore >=1.0.0 - - idna >=3.7 - - h2 >=4.1.0 - license: ISC - license_family: OTHER - size: 172172 - timestamp: 1733256829961 -- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda - sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 - md5: da16dd3b0b71339060cd44cb7110ddf9 - depends: - - dnspython >=2.0.0 - - idna >=2.0.0 - - python >=3.9 - license: Unlicense - size: 44401 - timestamp: 1733300827551 -- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda - sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 - md5: 0794f8807ff2c6f020422cacb1bd7bfa - depends: - - email-validator >=2.2.0,<2.2.1.0a0 - license: Unlicense - size: 6552 - timestamp: 1733300828176 -- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda - sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 - md5: a16662747cdeb9abbac74d0057cc976e - depends: - - python >=3.9 - license: MIT and PSF-2.0 - size: 20486 - timestamp: 1733208916977 -- conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda - sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 - md5: ef8b5fca76806159fc25b4f48d8737eb - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 28348 - timestamp: 1733569440265 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda - sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 - md5: 753382711adab47269f0bfe994906bc4 - depends: - python >=3.9 - - starlette >=0.40.0,<0.46.0 - - typing_extensions >=4.8.0 - - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 - - email_validator >=2.0.0 - - fastapi-cli >=0.0.5 - - httpx >=0.23.0 - - jinja2 >=3.1.5 - - python-multipart >=0.0.18 - - uvicorn-standard >=0.12.0 + - python-json-logger >=2.0.4 + - pyyaml >=5.3 + - referencing + - rfc3339-validator + - rfc3986-validator >=0.1.1 + - traitlets >=5.3 - python - license: MIT - license_family: MIT - size: 77940 - timestamp: 1738326226051 -- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda - sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 - md5: d960e0ea9e1c561aa928f6c4439f04c7 - depends: - - python >=3.9 - - rich-toolkit >=0.11.1 - - typer >=0.12.3 - - uvicorn-standard >=0.15.0 - license: MIT - license_family: MIT - size: 15546 - timestamp: 1734302408607 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda - sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 - md5: 7f402b4a1007ee355bc50ce4d24d4a57 - depends: - - python >=3.9 - license: Unlicense - size: 17544 - timestamp: 1737517924333 -- conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda - sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 - md5: d3549fd50d450b6d9e7dddff25dd2110 - depends: - - cached-property >=1.3.0 - - python >=3.9,<4 - license: MPL-2.0 - license_family: MOZILLA - size: 16705 - timestamp: 1733327494780 -- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 - md5: 9ae35c3d96db2c94ce0cef86efdfa2cb - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: x86_64 - platform: linux - license: GPL-2.0-only OR FTL - size: 634972 - timestamp: 1694615932610 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 - md5: a5ab74c5bd158c3d5532b66d8d83d907 - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: GPL-2.0-only OR FTL - size: 642092 - timestamp: 1694617858496 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 - md5: e6085e516a3e304ce41a8ee08b9b89ad - depends: - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: GPL-2.0-only OR FTL - size: 596430 - timestamp: 1694616332835 -- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda - sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f - md5: fb986e1c089021979dc79606af78ef8f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60939 - timestamp: 1737645356438 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda - sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d - md5: 9090bf5c43e8011fb2e9a82a1db20cc3 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 60472 - timestamp: 1737645511278 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda - sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d - md5: 5eb3715c7e3fa9b533361375bfefe6ee - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 57256 - timestamp: 1737645503377 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2024.12.0-pyhd8ed1ab_0.conda - sha256: 3320970c4604989eadf908397a9475f9e6a96a773c185915111399cbfbe47817 - md5: e041ad4c43ab5e10c74587f95378ebc7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 137756 - timestamp: 1734650349242 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda - sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a - md5: d411fc29e338efb48c5fd4576d71d881 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 119654 - timestamp: 1726600001928 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda - sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa - md5: 4ff634d515abbf664774b5e1168a9744 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 106638 - timestamp: 1726599967617 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda - sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 - md5: 57a511a5905caa37540eb914dfcbf1fb - depends: - - __osx >=11.0 - - libcxx >=17 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 82090 - timestamp: 1726600145480 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 - md5: ff862eebdfeb2fd048ae9dc92510baca - depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux license: BSD-3-Clause license_family: BSD - size: 143452 - timestamp: 1718284177264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda - sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 - md5: 08940a32c6ced3703d1412dd37df4f62 + size: 23647 + timestamp: 1738765986736 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a + md5: 6ba8c206b5c6f52b82435056cf74ee46 depends: - - gflags >=2.2.2,<2.3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux + - anyio >=3.1.0 + - argon2-cffi >=21.1 + - jinja2 >=3.0.3 + - jupyter_client >=7.4.4 + - jupyter_core >=4.12,!=5.0.* + - jupyter_events >=0.11.0 + - jupyter_server_terminals >=0.4.4 + - nbconvert-core >=6.4.4 + - nbformat >=5.3.0 + - overrides >=5.0 + - packaging >=22.0 + - prometheus_client >=0.9 + - python >=3.9 + - pyzmq >=24 + - send2trash >=1.8.2 + - terminado >=0.8.3 + - tornado >=6.2.0 + - traitlets >=5.6.0 + - websocket-client >=1.7 license: BSD-3-Clause license_family: BSD - size: 145811 - timestamp: 1718284208668 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 - md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + size: 327747 + timestamp: 1734702771032 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 + md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd depends: - - __osx >=11.0 - - gflags >=2.2.2,<2.3.0a0 - - libcxx >=16 - arch: arm64 - platform: osx + - python >=3.9 + - terminado >=0.8.3 license: BSD-3-Clause license_family: BSD - size: 112215 - timestamp: 1718284365403 -- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.66.0-pyhff2d567_0.conda - sha256: d8d19575a827f2c62500949b9536efdd6b5406c9f546a73b6a87ac90b03a5875 - md5: 4861e30ff0cd566ea6fb4593e3b7c22a - depends: - - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 116522 - timestamp: 1731459019854 -- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda - sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 - md5: 7ee49e89531c0dcbba9466f6d115d585 - depends: - - python >=3.9 - - typing_extensions - license: MIT - license_family: MIT - size: 51846 - timestamp: 1733327599467 -- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda - sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c - md5: 825927dc7b0f287ef8d4d0011bb113b1 - depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 - - python >=3.9 - license: MIT - license_family: MIT - size: 52000 - timestamp: 1733298867359 -- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba - md5: 0a802cb9888dd14eeefc611f05c40b6e - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 30731 - timestamp: 1737618390337 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda - sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df - md5: 2ca8e6dbc86525c8b95e3c0ffa26442e - depends: - - python >=3.8 - - h11 >=0.13,<0.15 - - h2 >=3,<5 - - sniffio 1.* - - anyio >=3.0,<5.0 - - certifi - license: BSD-3-Clause - license_family: BSD - size: 48959 - timestamp: 1731707562362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda - sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 - md5: 8b1160b32557290b64d5be68db3d996d - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 101872 - timestamp: 1732707756745 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda - sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 - md5: 5e70a6de59352f9a52e9caa7f3447390 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 101255 - timestamp: 1732707891645 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda - sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be - md5: e1747a8e8d2aca5499aaea9993bf31ff - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 85623 - timestamp: 1732707871414 -- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 - md5: d6989ead454181f4f9bc987d3dc4e285 - depends: - - anyio - - certifi - - httpcore 1.* - - idna - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 63082 - timestamp: 1733663449209 -- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.28.0-pyhd8ed1ab_0.conda - sha256: 3c48ffeb8a425eeba5dfa81a4da4b738a12d2104da0c3b443185029718dd6e48 - md5: 317f31a6fe151756ef10e7ed97a15f8a - depends: - - filelock - - fsspec >=2023.5.0 - - packaging >=20.9 - - python >=3.9 - - pyyaml >=5.1 - - requests - - tqdm >=4.42.1 - - typing-extensions >=3.7.4.3 - - typing_extensions >=3.7.4.3 - license: Apache-2.0 - license_family: APACHE - size: 284361 - timestamp: 1738349452337 -- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 - md5: 8e6923fc12f1fe8f8c4e5c9f343256ac - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 17397 - timestamp: 1737618427549 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 - md5: 268203e8b983fddb6412b36f2024e75c - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 12282786 - timestamp: 1720853454991 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 - md5: 5eb22c1d7b3fc4abb50d92d621583137 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 11857802 - timestamp: 1720853997952 -- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 - md5: 39a4f67be3286c86d696df570b1201b7 - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 49765 - timestamp: 1733211921194 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda - sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 - md5: 315607a3030ad5d5227e76e0733798ff - depends: - - python >=3.9 - - zipp >=0.5 - license: Apache-2.0 - license_family: APACHE - size: 28623 - timestamp: 1733223207185 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - sha256: acc1d991837c0afb67c75b77fdc72b4bf022aac71fedd8b9ea45918ac9b08a80 - md5: c85c76dc67d75619a92f51dfbce06992 - depends: - - python >=3.9 - - zipp >=3.1.0 - constrains: - - importlib-resources >=6.5.2,<6.5.3.0a0 - license: Apache-2.0 - license_family: APACHE - size: 33781 - timestamp: 1736252433366 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda - sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a - md5: b40131ab6a36ac2c09b7c57d4d3fbf99 - depends: - - __linux - - comm >=0.1.1 - - debugpy >=1.6.5 - - ipython >=7.23.1 - - jupyter_client >=6.1.12 - - jupyter_core >=4.12,!=5.0.* - - matplotlib-inline >=0.1 - - nest-asyncio - - packaging - - psutil - - python >=3.8 - - pyzmq >=24 - - tornado >=6.1 - - traitlets >=5.4.0 - license: BSD-3-Clause - license_family: BSD - size: 119084 - timestamp: 1719845605084 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh57ce528_0.conda - sha256: 072534d4d379225b2c3a4e38bc7730b65ae171ac7f0c2d401141043336e97980 - md5: 9eb15d654daa0ef5a98802f586bb4ffc - depends: - - __osx - - appnope - - comm >=0.1.1 - - debugpy >=1.6.5 - - ipython >=7.23.1 - - jupyter_client >=6.1.12 - - jupyter_core >=4.12,!=5.0.* - - matplotlib-inline >=0.1 - - nest-asyncio - - packaging - - psutil - - python >=3.8 - - pyzmq >=24 - - tornado >=6.1 - - traitlets >=5.4.0 - license: BSD-3-Clause - license_family: BSD - size: 119568 - timestamp: 1719845667420 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda - sha256: e10d1172ebf950f8f087f0d9310d215f5ddb8f3ad247bfa58ab5a909b3cabbdc - md5: 1d7fcd803dfa936a6c3bd051b293241c - depends: - - __unix - - decorator - - exceptiongroup - - jedi >=0.16 - - matplotlib-inline - - pexpect >4.3 - - pickleshare - - prompt-toolkit >=3.0.41,<3.1.0 - - pygments >=2.4.0 - - python >=3.10 - - stack_data - - traitlets >=5.13.0 - - typing_extensions >=4.6 - license: BSD-3-Clause - license_family: BSD - size: 600761 - timestamp: 1734788248334 -- conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed - md5: 0b0154421989637d424ccf0f104be51a - depends: - - arrow >=0.15.0 - - python >=3.9 - license: MIT - license_family: MIT - size: 19832 - timestamp: 1733493720346 -- conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 - md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 - depends: - - parso >=0.8.3,<0.9.0 - - python >=3.9 - license: Apache-2.0 AND MIT - size: 843646 - timestamp: 1733300981994 -- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda - sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 - md5: 2752a6ed44105bfb18c9bef1177d9dcd - depends: - - markupsafe >=2.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 112561 - timestamp: 1734824044952 -- conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda - sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f - md5: cd170f82d8e5b355dfdea6adab23e4af - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 31573 - timestamp: 1733272196759 -- conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 - md5: 6b51f7459ea4073eeb5057207e2e1e3d - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 17277 - timestamp: 1725303032027 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc - md5: 2257c5f33024274faadf6a88a7d62807 - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 17821 - timestamp: 1725303138276 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 - md5: 80f403c03290e1662be03e026fb5f8ab - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 17865 - timestamp: 1725303130815 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda - sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 - md5: a3cead9264b331b32fe8f0aabc967522 - depends: - - attrs >=22.2.0 - - importlib_resources >=1.4.0 - - jsonschema-specifications >=2023.03.6 - - pkgutil-resolve-name >=1.3.10 - - python >=3.9 - - referencing >=0.28.4 - - rpds-py >=0.7.1 - license: MIT - license_family: MIT - size: 74256 - timestamp: 1733472818764 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda - sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 - md5: 3b519bc21bc80e60b456f1e62962a766 - depends: - - python >=3.9 - - referencing >=0.31.0 - license: MIT - license_family: MIT - size: 16170 - timestamp: 1733493624968 -- conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda - sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d - md5: a5b1a8065857cc4bd8b7a38d063bb728 - depends: - - fqdn - - idna - - isoduration - - jsonpointer >1.13 - - jsonschema >=4.23.0,<4.23.1.0a0 - - rfc3339-validator - - rfc3986-validator >0.1.0 - - uri-template - - webcolors >=24.6.0 - license: MIT - license_family: MIT - size: 7135 - timestamp: 1733472820035 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda - sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 - md5: 0b4c3908e5a38ea22ebb98ee5888c768 - depends: - - importlib-metadata >=4.8.3 - - jupyter_server >=1.1.2 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 55221 - timestamp: 1733493006611 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda - sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a - md5: 4ebae00eae9705b0c3d6d1018a81d047 - depends: - - importlib-metadata >=4.8.3 - - jupyter_core >=4.12,!=5.0.* - - python >=3.9 - - python-dateutil >=2.8.2 - - pyzmq >=23.0 - - tornado >=6.2 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 106342 - timestamp: 1733441040958 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda - sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd - md5: 0a2980dada0dd7fd0998f0342308b1b1 - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 57671 - timestamp: 1727163547058 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda - sha256: eeb32aa58d37b130387628d5c151092f6d3fcf0a6964294bef06d6bac117f3c4 - md5: 2d8876ca6bda213622dfbc3d1da56ecb - depends: - - jsonschema-with-format-nongpl >=4.18.0 - - packaging - - python >=3.9 - - python-json-logger >=2.0.4 - - pyyaml >=5.3 - - referencing - - rfc3339-validator - - rfc3986-validator >=0.1.1 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 22160 - timestamp: 1734531779868 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda - sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a - md5: 6ba8c206b5c6f52b82435056cf74ee46 - depends: - - anyio >=3.1.0 - - argon2-cffi >=21.1 - - jinja2 >=3.0.3 - - jupyter_client >=7.4.4 - - jupyter_core >=4.12,!=5.0.* - - jupyter_events >=0.11.0 - - jupyter_server_terminals >=0.4.4 - - nbconvert-core >=6.4.4 - - nbformat >=5.3.0 - - overrides >=5.0 - - packaging >=22.0 - - prometheus_client >=0.9 - - python >=3.9 - - pyzmq >=24 - - send2trash >=1.8.2 - - terminado >=0.8.3 - - tornado >=6.2.0 - - traitlets >=5.6.0 - - websocket-client >=1.7 - license: BSD-3-Clause - license_family: BSD - size: 327747 - timestamp: 1734702771032 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda - sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 - md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd - depends: - - python >=3.9 - - terminado >=0.8.3 - license: BSD-3-Clause - license_family: BSD - size: 19711 - timestamp: 1733428049134 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda - sha256: 9d033314060993522e1ad999ded9da316a8b928d11b7a58c254597382239a72e - md5: ec1f95d39ec862a7a87de0662a98ce3e - depends: - - async-lru >=1.0.0 - - httpx >=0.25.0 - - importlib-metadata >=4.8.3 - - ipykernel >=6.5.0 - - jinja2 >=3.0.3 - - jupyter-lsp >=2.0.0 - - jupyter_core - - jupyter_server >=2.4.0,<3 - - jupyterlab_server >=2.27.1,<3 - - notebook-shim >=0.2 - - packaging - - python >=3.9 - - setuptools >=40.8.0 - - tomli >=1.2.2 - - tornado >=6.2.0 - - traitlets - license: BSD-3-Clause - license_family: BSD - size: 7614652 - timestamp: 1738184813883 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 - md5: fd312693df06da3578383232528c468d - depends: - - pygments >=2.4.1,<3 - - python >=3.9 - constrains: - - jupyterlab >=4.0.8,<5.0.0 - license: BSD-3-Clause - license_family: BSD - size: 18711 - timestamp: 1733328194037 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda - sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 - md5: 9dc4b2b0f41f0de41d27f3293e319357 - depends: - - babel >=2.10 - - importlib-metadata >=4.8.3 - - jinja2 >=3.0.3 - - json5 >=0.9.0 - - jsonschema >=4.18 - - jupyter_server >=1.21,<3 - - packaging >=21.3 - - python >=3.9 - - requests >=2.31 - constrains: - - openapi-core >=0.18.0,<0.19.0 - license: BSD-3-Clause - license_family: BSD - size: 49449 - timestamp: 1733599666357 -- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb - md5: 30186d27e2c9fa62b45fb1476b7200e3 - depends: - - libgcc-ng >=10.3.0 - arch: x86_64 - platform: linux - license: LGPL-2.1-or-later - size: 117831 - timestamp: 1646151697040 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b - md5: 1f24853e59c68892452ef94ddd8afd4b - depends: - - libgcc-ng >=10.3.0 - arch: aarch64 - platform: linux - license: LGPL-2.1-or-later - size: 112327 - timestamp: 1646166857935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 - depends: - - keyutils >=1.6.1,<2.0a0 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - openssl >=3.3.1,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 - depends: - - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 245247 - timestamp: 1701647787198 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d - md5: ffdd8267a04c515e7ce69c727b051414 - depends: - - libgcc-ng >=12 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 296219 - timestamp: 1701647961116 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 - depends: - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 211959 - timestamp: 1701647962657 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe - md5: 048b02e3962f066da18efe3a21b77672 - depends: - - __glibc >=2.17,<3.0.a0 - constrains: - - binutils_impl_linux-64 2.43 - arch: x86_64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 669211 - timestamp: 1729655358674 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b - md5: fcbde5ea19d55468953bf588770c0501 - constrains: - - binutils_impl_linux-aarch64 2.43 - arch: aarch64 - platform: linux - license: GPL-3.0-only - license_family: GPL - size: 698245 - timestamp: 1729655345825 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 - md5: 76bbff344f0134279f225174e9064c8f - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 281798 - timestamp: 1657977462600 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 - md5: 1a0ffc65e03ce81559dbcb0695ad1476 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 262096 - timestamp: 1657978241894 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 - md5: de462d5aacda3b30721b512c5da4e742 - depends: - - libcxx >=13.0.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 215721 - timestamp: 1657977558796 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda - sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 - md5: 488f260ccda0afaf08acb286db439c2f - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1311599 - timestamp: 1736008414161 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda - sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 - md5: 633b9fe454ffea2aaf29e191d946a83b - depends: - - libgcc >=13 - - libstdcxx >=13 - constrains: - - abseil-cpp =20240722.0 - - libabseil-static =20240722.0=cxx17* - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1334844 - timestamp: 1736008472455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda - sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 - md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 - depends: - - __osx >=11.0 - - libcxx >=18 - constrains: - - libabseil-static =20240722.0=cxx17* - - abseil-cpp =20240722.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 1178260 - timestamp: 1736008642885 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.0-h00a82cf_8_cpu.conda - build_number: 8 - sha256: dcac39be95b9afe42bc9b7bfcfa258e31e413a4cb79c49f6707edf2838e8d64c - md5: 51e31b59290c09b58d290f66b908999b - depends: - - __glibc >=2.17,<3.0.a0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - parquet-cpp <0.0a0 - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8969999 - timestamp: 1737824740139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.0-h03ebaaf_8_cpu.conda - build_number: 8 - sha256: ca5db2ba71de0c4fb54ee12e3b841e3e90b988ae7a5935fae3cce90111b5cb6d - md5: 1ac6f73a63d715590a7ad0113a578762 - depends: - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libgcc >=13 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 8213318 - timestamp: 1737808895185 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.0-h819e3af_8_cpu.conda - build_number: 8 - sha256: 825afabd1c998dfddce9600584c492296a15219d441c6e3029e6c6228200d695 - md5: fbe0ce0ef6d386ab832ee5cca2ab3048 - depends: - - __osx >=11.0 - - aws-crt-cpp >=0.29.9,<0.29.10.0a0 - - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 - - azure-core-cpp >=1.14.0,<1.14.1.0a0 - - azure-identity-cpp >=1.10.0,<1.10.1.0a0 - - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 - - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 - - bzip2 >=1.0.8,<2.0a0 - - glog >=0.7.1,<0.8.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libbrotlidec >=1.1.0,<1.2.0a0 - - libbrotlienc >=1.1.0,<1.2.0a0 - - libcxx >=18 - - libgoogle-cloud >=2.34.0,<2.35.0a0 - - libgoogle-cloud-storage >=2.34.0,<2.35.0a0 - - libopentelemetry-cpp >=1.18.0,<1.19.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libutf8proc >=2.10.0,<2.11.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - orc >=2.0.3,<2.0.4.0a0 - - re2 - - snappy >=1.2.1,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - arrow-cpp <0.0a0 - - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5573619 - timestamp: 1737806044972 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: bf8f64403685eb3ab6ebc5a25cc3a70431a1f822469bf96b0ee80c169deec0ac - md5: dafba09929a58e10bb8231ff7966e623 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 637555 - timestamp: 1737824783456 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: 154fe9bee1a1e3c96497fcbf3c01191965d5c4e9718dcbf8502035d7ff633499 - md5: e015edb6317c81893f9ce4865bbd55f4 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 602892 - timestamp: 1737808980001 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 66ce35077dae435cd34644d53159af14afd62452eeec8f63cd55adb11e7f2780 - md5: 68cd272eccf7b4fcb0a3bab95e89e71e - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 500365 - timestamp: 1737806169385 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.0-hcb10f89_8_cpu.conda - build_number: 8 - sha256: dc4a0f13428c9bd9781e25b67f5f52a92b8c4beafa2435fe5127e9fac7969218 - md5: 66e19108e4597b9a35d0886607c2d8a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libparquet 19.0.0 h081d1f1_8_cpu - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 604335 - timestamp: 1737824891062 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.0-h3b568fd_8_cpu.conda - build_number: 8 - sha256: f038f979b3357124a548dd83880f94284355a90e4736caaabd23c750cf06eaa9 - md5: 03f35d7f35dae0e05f5f4f747d7eb6e7 - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libparquet 19.0.0 hfc78867_8_cpu - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 579626 - timestamp: 1737809072479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.0-hf07054f_8_cpu.conda - build_number: 8 - sha256: 6934ce0503472f002695d45ae12a8f2948e10e7a0b7430330a4d0d83f3e5ca27 - md5: 1a941d1ddc16b532790781a4becdc881 - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libparquet 19.0.0 h636d7b7_8_cpu - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 501001 - timestamp: 1737807214184 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.0-h08228c5_8_cpu.conda - build_number: 8 - sha256: e370ee738d3963120f715343a27cf041c62a3ee8bb19e25da9115ec4bae5f2de - md5: e5dd1926e5a4b23de8ba4eacc8eb9b2d - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libarrow-acero 19.0.0 hcb10f89_8_cpu - - libarrow-dataset 19.0.0 hcb10f89_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 521475 - timestamp: 1737824942852 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.0-h1e9d426_8_cpu.conda - build_number: 8 - sha256: 92e1fea8557a931c273ea3bd3bf73a4f4f0c566844dcedf78b9a16e5cf6cab56 - md5: ef08fcb5c165cdc743336bd8f4cbed69 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h03ebaaf_8_cpu - - libarrow-acero 19.0.0 h3b568fd_8_cpu - - libarrow-dataset 19.0.0 h3b568fd_8_cpu - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 516126 - timestamp: 1737809118915 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.0-h4239455_8_cpu.conda - build_number: 8 - sha256: 445d2ca20b07e57270f3b07b62c09794369413e5ff3716d9c73d0ad360969583 - md5: a39953d9b03b0463f4ccc187a8bcfcca - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libarrow 19.0.0 h819e3af_8_cpu - - libarrow-acero 19.0.0 hf07054f_8_cpu - - libarrow-dataset 19.0.0 hf07054f_8_cpu - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 449672 - timestamp: 1737807386331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-28_h59b9bed_openblas.conda - build_number: 28 - sha256: 93fbcf2800b859b7ca5add3ab5d3aa11c6a6ff4b942a1cea4bf644f78488edb8 - md5: 73e2a99fdeb8531d50168987378fda8a - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - arch: x86_64 - platform: linux + size: 19711 + timestamp: 1733428049134 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.5-pyhd8ed1ab_0.conda + sha256: 9d033314060993522e1ad999ded9da316a8b928d11b7a58c254597382239a72e + md5: ec1f95d39ec862a7a87de0662a98ce3e + depends: + - async-lru >=1.0.0 + - httpx >=0.25.0 + - importlib-metadata >=4.8.3 + - ipykernel >=6.5.0 + - jinja2 >=3.0.3 + - jupyter-lsp >=2.0.0 + - jupyter_core + - jupyter_server >=2.4.0,<3 + - jupyterlab_server >=2.27.1,<3 + - notebook-shim >=0.2 + - packaging + - python >=3.9 + - setuptools >=40.8.0 + - tomli >=1.2.2 + - tornado >=6.2.0 + - traitlets license: BSD-3-Clause license_family: BSD - size: 16621 - timestamp: 1738114033763 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-28_h1a9f1db_openblas.conda - build_number: 28 - sha256: a50dc7ed1f49789aab4ffb560d9a46b5dc3f059a925282f699c1a96fa566a1a0 - md5: 88dfbb3875d62b431aa676b4a54734bf - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 7614652 + timestamp: 1738184813883 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 + md5: fd312693df06da3578383232528c468d + depends: + - pygments >=2.4.1,<3 + - python >=3.9 constrains: - - liblapack =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - arch: aarch64 - platform: linux + - jupyterlab >=4.0.8,<5.0.0 license: BSD-3-Clause license_family: BSD - size: 16697 - timestamp: 1738114082682 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-28_h10e41b3_openblas.conda - build_number: 28 - sha256: 5bea855a1a7435ce2238535aa4b13db8af8ee301d99a42b083b63fa64c1ea144 - md5: 166166d84a0e9571dc50210baf993b46 - depends: - - libopenblas >=0.3.28,<0.3.29.0a0 - - libopenblas >=0.3.28,<1.0a0 + size: 18711 + timestamp: 1733328194037 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 + md5: 9dc4b2b0f41f0de41d27f3293e319357 + depends: + - babel >=2.10 + - importlib-metadata >=4.8.3 + - jinja2 >=3.0.3 + - json5 >=0.9.0 + - jsonschema >=4.18 + - jupyter_server >=1.21,<3 + - packaging >=21.3 + - python >=3.9 + - requests >=2.31 constrains: - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas - - blas =2.128=openblas - - libcblas =3.9.0=28*_openblas - arch: arm64 - platform: osx + - openapi-core >=0.18.0,<0.19.0 license: BSD-3-Clause license_family: BSD - size: 16840 - timestamp: 1738114389937 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 + size: 49449 + timestamp: 1733599666357 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc-ng >=10.3.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 68851 - timestamp: 1725267660471 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 - md5: 3ee026955c688f551a9999840cff4c67 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b depends: - - libgcc >=13 + - libgcc-ng >=10.3.0 arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 68982 - timestamp: 1725267774142 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 - md5: d0bf1dff146b799b319ea0434b93f779 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 68426 - timestamp: 1725267943211 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 32696 - timestamp: 1725267669305 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c - md5: e64d0f3b59c7c4047446b97a8624a72d + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - - libgcc >=13 + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 31708 - timestamp: 1725267783442 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 - md5: 55e66e68ce55523a6811633dd1ac74e2 + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 arch: arm64 platform: osx license: MIT license_family: MIT - size: 28378 - timestamp: 1725267980316 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f depends: - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: x86_64 platform: linux - license: MIT - license_family: MIT - size: 281750 - timestamp: 1725267679782 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c - md5: 0e9bd365480c72b25c71a448257b537d + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b depends: - - libbrotlicommon 1.1.0 h86ecc28_2 - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* arch: aarch64 platform: linux - license: MIT - license_family: MIT - size: 290230 - timestamp: 1725267792697 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 - md5: 4f3a434504c67b2c42565c0b85c1885c + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 depends: - __osx >=11.0 - - libbrotlicommon 1.1.0 hd74edd7_2 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 arch: arm64 platform: osx - license: MIT - license_family: MIT - size: 279644 - timestamp: 1725268003553 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-28_he106b2a_openblas.conda - build_number: 28 - sha256: de293e117db53e5d78b579136509c35a5e4ad11529c05f9af83cf89be4d30de1 - md5: 4e20a1c00b4e8a984aac0f6cce59e3ac - depends: - - libblas 3.9.0 28_h59b9bed_openblas + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_h59b9bed_openblas.conda + build_number: 31 + sha256: 9839fc4ac0cbb0aa3b9eea520adfb57311838959222654804e58f6f2d1771db5 + md5: 728dbebd0f7a20337218beacffd37916 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.128=openblas - - liblapack =3.9.0=28*_openblas - - liblapacke =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - libcblas =3.9.0=31*_openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16539 - timestamp: 1738114043618 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-28_hab92f65_openblas.conda - build_number: 28 - sha256: ed62f13a85726f568e17ad569b5cc01a49a6c7bd334802cf1c1b15e9d10e7e93 - md5: 8cff453f547365131be5647c7680ac6d - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 16859 + timestamp: 1740087969120 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - liblapack =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16655 - timestamp: 1738114088527 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-28_hb3479ef_openblas.conda - build_number: 28 - sha256: f08adea59381babb3568e6d23e52aff874cbc25f299821647ab1127d1e1332ca - md5: 30942dea911ce333765003a8adec4e8a - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - liblapack =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16788 - timestamp: 1738114399962 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 - md5: c965a5aa0d5c1c37ffc62dff36e28400 + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda + build_number: 31 + sha256: ede8545011f5b208b151fe3e883eb4e31d495ab925ab7b9ce394edca846e0c0d + md5: abb32c727da370c481a1c206f5159ce9 depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 + - libblas 3.9.0 31_h59b9bed_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 20440 - timestamp: 1633683576494 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 - sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea - md5: 268ee639c17ada0002fb04dd21816cc2 + size: 16796 + timestamp: 1740087984429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 depends: - - libgcc-ng >=9.4.0 - - libstdcxx-ng >=9.4.0 + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 18669 - timestamp: 1633683724891 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 - md5: 32bd82a6a625ea6ce090a81c3d34edeb + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 depends: - - libcxx >=11.1.0 + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 18765 - timestamp: 1633683992603 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda - sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 - md5: 2b3e0081006dc21e8bf53a91c83a055c - depends: - - __glibc >=2.17,<3.0.a0 - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: curl - license_family: MIT - size: 423011 - timestamp: 1733999897624 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda - sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b - md5: 7dec1cd271c403d1636bda5aa388a55d - depends: - - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: curl - license_family: MIT - size: 440737 - timestamp: 1733999835504 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda - sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 - md5: 46d7524cabfdd199bffe63f8f19a552b - depends: - - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.64.0,<2.0a0 - - libssh2 >=1.11.1,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: curl - license_family: MIT - size: 385098 - timestamp: 1734000160270 + size: 17032 + timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 md5: 5b3e1610ff8bd5443476b91d618f5b77 @@ -3932,43 +1699,9 @@ packages: license_family: Apache size: 523505 timestamp: 1736877862502 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda - sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 - md5: 8dfae1d2e74767e9ce36d5fa0d8605db - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 72255 - timestamp: 1734373823254 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda - sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 - md5: 7e7ca2607b11b180120cefc2354fc0cb - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 69862 - timestamp: 1734373858306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 - md5: 1d8b9588be14e71df38c525767a1ac30 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 54132 - timestamp: 1734373971372 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda - sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd - md5: 8247f80f3dc464d9322e85007e307fe8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b depends: - ncurses - __glibc >=2.17,<3.0.a0 @@ -3978,11 +1711,11 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 134657 - timestamp: 1736191912705 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20240808-pl5321h976ea20_0.conda - sha256: 031daea98cf278f858b7957ad5dc475f1b5673cd5e718850529401ced64cef2c - md5: 0be40129d3dd1a152fff29a85f0785d0 + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 depends: - ncurses - libgcc >=13 @@ -3991,87 +1724,21 @@ packages: platform: linux license: BSD-2-Clause license_family: BSD - size: 148120 - timestamp: 1736192137151 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20240808-pl5321hafb1f1b_0.conda - sha256: fb934d7a03279ec8eae4bf1913ac9058fcf6fed35290d8ffa6e04157f396a3b1 - md5: af89aa84ffb5ee551ce0c137b951a3b5 + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b depends: - ncurses - - __osx >=11.0 - - ncurses >=6.5,<7.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107634 - timestamp: 1736192034117 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda - sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 - md5: a9a13cb143bbaa477b1ebaefbe47a302 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 115123 - timestamp: 1702146237623 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f - md5: 36d33e440c31857372a72137f78bacf5 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 107458 - timestamp: 1702146414478 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 - md5: a1cfcc585f0c42bf8d5546bb1dfb668d - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 427426 - timestamp: 1685725977222 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda - sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 - md5: 96ae6083cd1ac9f6bc81631ac835b317 - depends: - - libgcc-ng >=12 - - openssl >=3.1.1,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 438992 - timestamp: 1685726046519 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 - md5: 1a109764bff3bdc7bdd84088347d71dc - depends: - - openssl >=3.1.1,<4.0a0 + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx - license: BSD-3-Clause + license: BSD-2-Clause license_family: BSD - size: 368167 - timestamp: 1685726248899 + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c @@ -4112,28 +1779,29 @@ packages: license_family: MIT size: 64693 timestamp: 1730967175868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 depends: - - libgcc-ng >=9.4.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 arch: x86_64 platform: linux license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 - sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c - md5: dddd85f4d52121fab0a8b099c5e06501 + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 depends: - - libgcc-ng >=9.4.0 + - libgcc >=13 arch: aarch64 platform: linux license: MIT license_family: MIT - size: 59450 - timestamp: 1636488255090 + size: 51513 + timestamp: 1739260449772 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca md5: 086914b672be056eb70fd4285b6783b6 @@ -4143,83 +1811,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -4231,10 +1899,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -4242,11 +1911,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -4255,8 +1924,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -4270,408 +1939,105 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.34.0-h2b5623c_0.conda - sha256: 348ee1dddd82dcef5a185c86e65dda8acfc9b583acc425ccb9b661f2d433b2cc - md5: 2a5142c88dd6132eaa8079f99476e922 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256795 - timestamp: 1737286199784 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.34.0-hccf9d24_0.conda - sha256: 54267dda8fafc2a2d379ef77b6029d8240e0628d4b29758f788fb903f84397a3 - md5: 1ce0fd876001c40801b40fea22987e41 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgcc >=13 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1256586 - timestamp: 1737285242684 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.34.0-hdbe95d5_0.conda - sha256: 919d8cbcd47d5bd2244c55b2bb87e2bd2eed8215996aab8435cb7123ffd9d20e - md5: 69826544e7978fcaa6bc8c1962d96ad6 - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libcxx >=18 - - libgrpc >=1.67.1,<1.68.0a0 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - openssl >=3.4.0,<4.0a0 - constrains: - - libgoogle-cloud 2.34.0 *_0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 878217 - timestamp: 1737284441192 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.34.0-h0121fbd_0.conda - sha256: aa1b3b30ae6b2eab7c9e6a8e2fd8ec3776f25d2e3f0b6f9dc547ff8083bf25fa - md5: 9f0c43225243c81c6991733edcaafff5 - depends: - - __glibc >=2.17,<3.0.a0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 h2b5623c_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 785792 - timestamp: 1737286406612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.34.0-hb9b2b65_0.conda - sha256: 4ad4fb7c02dcfa4c86dcf9591e0131a01fc0f2c3f2729c12882b944ddf2b8a9d - md5: 0732a5988f7f556f2c1d1f51026fc1be - depends: - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libgcc >=13 - - libgoogle-cloud 2.34.0 hccf9d24_0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 739678 - timestamp: 1737285399565 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.34.0-h7081f7f_0.conda - sha256: 79f6b93fb330728530036b2b38764e9d42e0eedd3ae7e549ac7eae49acd1e52b - md5: f09cb03f9cf847f1dc41b4c1f65c97c2 - depends: - - __osx >=11.0 - - libabseil - - libcrc32c >=1.1.2,<1.2.0a0 - - libcurl - - libcxx >=18 - - libgoogle-cloud 2.34.0 hdbe95d5_0 - - libzlib >=1.3.1,<2.0a0 - - openssl - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 529202 - timestamp: 1737285376801 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda - sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e - md5: 0c6497a760b99a926c7c12b74951a39c - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7792251 - timestamp: 1735584856826 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda - sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe - md5: 8fb41a425bebaeb3d0fa568503612e64 - depends: - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 7430006 - timestamp: 1735585769731 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda - sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 - md5: 8a3cba079d6ac985e7d73c76a678fbb4 - depends: - - __osx >=11.0 - - c-ares >=1.34.4,<2.0a0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libre2-11 >=2024.7.2 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - re2 - constrains: - - grpc-cpp =1.67.1 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 5311706 - timestamp: 1735585137716 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 - md5: 9a8eb13f14de7d761555a98712e6df65 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - size: 705787 - timestamp: 1702684557134 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d - arch: arm64 - platform: osx - license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: x86_64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 - md5: ed24e702928be089d9ba3f05618515c6 - depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - arch: aarch64 - platform: linux - license: IJG AND BSD-3-Clause AND Zlib - size: 647126 - timestamp: 1694475003570 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 - md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda + build_number: 31 + sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 + md5: 452b98eafe050ecff932f0ec832dd03f + depends: + - libblas 3.9.0 31_h59b9bed_openblas constrains: - - jpeg <0.0.0a - arch: arm64 - platform: osx - license: IJG AND BSD-3-Clause AND Zlib - size: 547541 - timestamp: 1694475104253 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-28_h7ac8fdf_openblas.conda - build_number: 28 - sha256: 9530e6840690b78360946390a1d29624734a6b624f02c26631fb451592cbb8ef - md5: 069f40bfbf1dc55c83ddb07fc6a6ef8d - depends: - - libblas 3.9.0 28_h59b9bed_openblas - constrains: - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas arch: x86_64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16553 - timestamp: 1738114053556 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-28_h411afd4_openblas.conda - build_number: 28 - sha256: 1290ce1071a586e22bdd7d8f4c48000cc0005f0a67660be150d1ea5c6092129f - md5: bc4c5ee31476521e202356b56bba6077 - depends: - - libblas 3.9.0 28_h1a9f1db_openblas + size: 16790 + timestamp: 1740087997375 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas constrains: - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas - - blas =2.128=openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas arch: aarch64 platform: linux license: BSD-3-Clause license_family: BSD - size: 16637 - timestamp: 1738114094310 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-28_hc9a63f6_openblas.conda - build_number: 28 - sha256: 79c75a02bff20f8b001e6aecfee8d22a51552c3986e7037fca68e5ed071cc213 - md5: 45f26652530b558c21083ceb7adaf273 - depends: - - libblas 3.9.0 28_h10e41b3_openblas + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas constrains: - - blas =2.128=openblas - - liblapacke =3.9.0=28*_openblas - - libcblas =3.9.0=28*_openblas + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas arch: arm64 platform: osx license: BSD-3-Clause license_family: BSD - size: 16793 - timestamp: 1738114407021 -- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda - sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 - md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: x86_64 platform: linux license: 0BSD - size: 111132 - timestamp: 1733407410083 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda - sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 - md5: eb08b903681f9f2432c320e8ed626723 + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 depends: - libgcc >=13 - constrains: - - xz ==5.6.3=*_1 arch: aarch64 platform: linux license: 0BSD - size: 124138 - timestamp: 1733409137214 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda - sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 - md5: b2553114a7f5e20ccd02378a77d836aa + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 depends: - __osx >=11.0 - constrains: - - xz ==5.6.3=*_1 arch: arm64 platform: osx license: 0BSD - size: 99129 - timestamp: 1733407496073 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 - md5: 19e57602824042dfd0446292ef90488b - depends: - - __glibc >=2.17,<3.0.a0 - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 647599 - timestamp: 1729571887612 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d - depends: - - c-ares >=1.32.3,<2.0a0 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 714610 - timestamp: 1729571912479 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 - depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 - - libev >=4.33,<4.34.0a0 - - libev >=4.33,<5.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 566719 - timestamp: 1729572385640 + size: 98945 + timestamp: 1738525462560 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 @@ -4683,237 +2049,64 @@ packages: license_family: GPL size: 33408 timestamp: 1697359010159 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe - md5: 62857b389e42b36b686331bec0922050 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 5578513 - timestamp: 1730772671118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 - md5: e8dde93dd199da3c1f2c1fcfd0042cd4 - depends: - - libgcc >=14 - - libgfortran - - libgfortran5 >=14.2.0 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 4793435 - timestamp: 1730773029647 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce - depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda - sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f - md5: 1f5a5d66e77a39dc5bd639ec953705cf - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 801927 - timestamp: 1735643375271 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda - sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba - md5: afe3c8c53f4b6d27d553c230d4b34038 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 800896 - timestamp: 1735643533825 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda - sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba - md5: 19c46cc18825f3924251c39ec1b0d983 - depends: - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcurl >=8.11.1,<9.0a0 - - libgrpc >=1.67.1,<1.68.0a0 - - libopentelemetry-cpp-headers 1.18.0 hce30654_1 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - nlohmann_json - - prometheus-cpp >=1.3.0,<1.4.0a0 - constrains: - - cpp-opentelemetry-sdk =1.18.0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 529588 - timestamp: 1735643889612 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda - sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 - md5: 4fb055f57404920a43b147031471e03b - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 320359 - timestamp: 1735643346175 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda - sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 - md5: 282193b19a19e3b5d75d18ef82713ef0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 319401 - timestamp: 1735643509251 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda - sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 - md5: e965dad955841507549fdacd8f7f94c0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 320565 - timestamp: 1735643673319 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.0-h081d1f1_8_cpu.conda - build_number: 8 - sha256: b2e1bf8634efb643a9f15fe19f9bc0877482c509eff7cee6136278a2c2fa5842 - md5: bef810a8da683aa11c644066a87f71c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0 h00a82cf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1241786 - timestamp: 1737824866572 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.0-hfc78867_8_cpu.conda - build_number: 8 - sha256: 8917fc5e5bb65894106bbd461d2f9c9c0c3dc642ff5da197c941bf620ce840a0 - md5: b0d5f8c122a3e9a6b75036e43e78fcfa - depends: - - libarrow 19.0.0 h03ebaaf_8_cpu - - libgcc >=13 - - libstdcxx >=13 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 1153834 - timestamp: 1737809048861 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.0-h636d7b7_8_cpu.conda - build_number: 8 - sha256: da04e6bd7ed2ca64aadf0ad12d9752e8423e85c37e0db80e27c7ff334fcbd2b6 - md5: c1ff2e71a289fb76146591c9d3f9de0a - depends: - - __osx >=11.0 - - libarrow 19.0.0 h819e3af_8_cpu - - libcxx >=18 - - libthrift >=0.21.0,<0.21.1.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 893482 - timestamp: 1737807155720 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.46-h943b412_0.conda - sha256: a46436dadd12d58155280d68876dba2d8a3badbc8074956d14fe6530c7c7eda6 - md5: adcf7bacff219488e29cfa95a2abd8f7 + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.29-pthreads_h94d23a6_0.conda + sha256: cc5389ea254f111ef17a53df75e8e5209ef2ea6117e3f8aced88b5a8e51f11c4 + md5: 0a4d0252248ef9a0f88f2ba8b8a08e12 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 arch: x86_64 platform: linux - license: zlib-acknowledgement - size: 292273 - timestamp: 1737791061653 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.46-hec79eb8_0.conda - sha256: be4eefe8415c9b37d158eaa9522ce4c399a572339ac2bcc4d26d6433e0ed767d - md5: f9f793497c0973d5416421aa2f96cda4 + license: BSD-3-Clause + license_family: BSD + size: 5919288 + timestamp: 1739825731827 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 arch: aarch64 platform: linux - license: zlib-acknowledgement - size: 304364 - timestamp: 1737795802176 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.46-h3783ad8_0.conda - sha256: db78a711561bb6df274ef421472d948dfd1093404db3915e891ae6d7fd37fadc - md5: 15d480fb9dad036eaa4de0b51eab3ccc + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 depends: - __osx >=11.0 - - libzlib >=1.3.1,<2.0a0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 arch: arm64 platform: osx - license: zlib-acknowledgement - size: 266516 - timestamp: 1737791023678 + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 md5: d8703f1ffe5a06356f06467f1d0b9464 @@ -4960,55 +2153,52 @@ packages: license_family: BSD size: 2271580 timestamp: 1735576361997 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda - sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 - md5: b2fede24428726dd867611664fb372e8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - constrains: - - re2 2024.07.02.* arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 209793 - timestamp: 1735541054068 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda - sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 - md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 - libstdcxx >=13 - constrains: - - re2 2024.07.02.* arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 204305 - timestamp: 1735540986919 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda - sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 - md5: 6b1e3624d3488016ca4f1ca0c412efaa + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 - constrains: - - re2 2024.07.02.* + - libprotobuf >=5.28.3,<5.28.4.0a0 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 167155 - timestamp: 1735541067807 + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -5039,9 +2229,9 @@ packages: license: ISC size: 164972 timestamp: 1716828607917 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.48.0-hee588c1_1.conda - sha256: 22853d289ef6ec8a5b20f1aa261895b06525439990d3b139f8bfd0b5c5e32a3a - md5: 3fa05c528d8a1e2a67bbf1e36f22d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -5049,248 +2239,75 @@ packages: arch: x86_64 platform: linux license: Unlicense - size: 878223 - timestamp: 1737564987837 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.48.0-h5eb1b54_1.conda - sha256: 81dd9bf66c7f1d9064e007e2c787133100c406e7ca2de61dba9fb7b87372f255 - md5: 4f3a61fe206f20b27c385ee608bcdfda + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c depends: - libgcc >=13 - libzlib >=1.3.1,<2.0a0 arch: aarch64 platform: linux license: Unlicense - size: 1044879 - timestamp: 1737565049785 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.48.0-h3f77e49_1.conda - sha256: 17c06940cc2a13fd6a17effabd6881b1477db38b2cd3ee2571092d293d3fdd75 - md5: 4c55169502ecddf8077973a987d08f08 + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 arch: arm64 platform: osx license: Unlicense - size: 852831 - timestamp: 1737564996616 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 - md5: ddc7194676c285513706e5fc64f214d7 - depends: - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 279028 - timestamp: 1732349599461 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda - sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 - md5: dcb95c0a98ba9ff737f7ae482aef7833 - depends: - - __glibc >=2.17,<3.0.a0 - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 425773 - timestamp: 1727205853307 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda - sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 - md5: c28792bf37f4ecdce8e3cb9e40750650 - depends: - - libevent >=2.1.12,<2.1.13.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 417329 - timestamp: 1727205944238 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda - sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad - md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 - depends: - - __osx >=11.0 - - libcxx >=17 - - libevent >=2.1.12,<2.1.13.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 324342 - timestamp: 1727206096912 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 - md5: 0ea6510969e1296cc19966fad481f6de - depends: - - __glibc >=2.17,<3.0.a0 - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 428173 - timestamp: 1734398813264 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 - md5: 36a0ea4a173338c8725dc0807e99cf22 - depends: - - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.23,<1.24.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libstdcxx >=13 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 464699 - timestamp: 1734398752249 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae - md5: a5d084a957563e614ec0c0196d890654 - depends: - - __osx >=11.0 - - lerc >=4.0.0,<5.0a0 - - libcxx >=18 - - libdeflate >=1.23,<1.24.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: HPND - size: 370600 - timestamp: 1734398863052 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda - sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 - md5: aeccfff2806ae38430638ffbb4be9610 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 82745 - timestamp: 1737244366901 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda - sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a - md5: c5166bcfb8348e8fc31ee16ec3981a5e - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 82679 - timestamp: 1737329054400 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda - sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 - md5: 5f741aed1d8d393586a5fdcaaa87f45c - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 83628 - timestamp: 1737244450097 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -5313,123 +2330,6 @@ packages: license_family: BSD size: 35720 timestamp: 1680113474501 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda - sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b - md5: 771ee65e13bc599b0b62af5359d80169 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 891272 - timestamp: 1737016632446 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda - sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e - md5: 915db044076cbbdffb425170deb4ce38 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 621056 - timestamp: 1737016626950 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda - sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 - md5: 20717343fb30798ab7c23c2e92b748c1 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 418890 - timestamp: 1737016751326 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf - md5: 63f790534398730f59e1b899c3644d4a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 429973 - timestamp: 1734777489810 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 - md5: 95ef4a689b8cc1b7e18b53784d88f96b - depends: - - libgcc >=13 - constrains: - - libwebp 1.5.0 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 362623 - timestamp: 1734779054659 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a - md5: 569466afeb84f90d5bb88c11cc23d746 - depends: - - __osx >=11.0 - constrains: - - libwebp 1.5.0 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 290013 - timestamp: 1734777593617 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 395888 - timestamp: 1727278577118 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda - sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b - md5: cd14ee5cca2464a425b1dbfc24d90db2 - depends: - - libgcc >=13 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 397493 - timestamp: 1727280745441 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 - md5: af523aae2eca6dfa1c8eec693f5b9a79 - depends: - - __osx >=11.0 - - pthread-stubs - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdmcp - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 323658 - timestamp: 1727278733917 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc @@ -5450,53 +2350,6 @@ packages: license: LGPL-2.1-or-later size: 114269 timestamp: 1702724369203 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda - sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de - md5: f5b05674697ae7d2c5932766695945e1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - constrains: - - icu <0.0a0 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 689993 - timestamp: 1733443678322 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 - md5: 63410f85031930cde371dfe0ee89109a - depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 732155 - timestamp: 1733443825814 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 - md5: 3dc3cff0eca1640a6acbbfab2f78139e - depends: - - __osx >=11.0 - - icu >=75.1,<76.0a0 - - libiconv >=1.17,<2.0a0 - - liblzma >=5.6.3,<6.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 582898 - timestamp: 1733443841584 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 md5: edb0dca6bc32e4f4789199455a1dbeb8 @@ -5550,53 +2403,6 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 - md5: 9de5350a85c4a20c685259b889aa6393 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 167055 - timestamp: 1733741040117 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda - sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 - md5: 6654e411da94011e8fbe004eacb8fe11 - depends: - - libgcc >=13 - - libstdcxx >=13 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 184953 - timestamp: 1733740984533 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 - md5: 01511afc6cc1909c5303cf31be17b44f - depends: - - __osx >=11.0 - - libcxx >=18 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 148824 - timestamp: 1733741047892 -- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda - sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a - md5: fee3164ac23dfca50cfcc8b85ddefb81 - depends: - - mdurl >=0.1,<1 - - python >=3.9 - license: MIT - license_family: MIT - size: 64430 - timestamp: 1733250550053 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 md5: eb227c3e0bf58f5bd69c0532b157975b @@ -5654,127 +2460,178 @@ packages: license_family: BSD size: 14467 timestamp: 1733417051523 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.1.0.dev2025013105-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: 1b8fcd33ceff5e6e87603d1de72c12493fe20e4f5204bc3d061a7e2b8ab33e84 - md5: 74268fafa5367b803cb82c74751fb0f0 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.1.0.dev2025013105 release - - max-python >=25.1.0.dev2025013105,<26.0a0 - - mojo-jupyter ==25.1.0.dev2025013105 release - - mblack ==25.1.0.dev2025013105 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9918 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.1.0.dev2025013105-release.conda - sha256: 1ac416f06cc0adad41d5ca07d55c0e146073c2971ba30696ce561fd7af5afb1a - md5: ddc94cd4ca461791a9e3ae7a571e78ed + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 243598857 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.1.0.dev2025013105-release.conda - sha256: faee2aee06a50c1ca71fc7df91564dafe97986a71474fe0c2694b663bc7b0a1d - md5: 203e66b533a2e81c659276ce2a211b6b + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 246147380 - timestamp: 1738300734602 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.1.0.dev2025013105-release.conda - sha256: 12c6501ffb4e951a4e583ef694529e5621ee4c9d06554b0db464de1a37552974 - md5: 5663c30c6ab3e0a29c0fdb08f5634a68 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.1.0.dev2025013105 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 209002959 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: d08de32fd4aa12b4593146fc6f268a105b264e279c3a75009870e8d310778ea6 - md5: 27c0957cae6a8620faf67beb5f320aa4 + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.1.0.dev2025013105 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - - python_abi 3.12.* *_cp312 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120809611 - timestamp: 1738300650444 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 55f72914a83403fac6e20372314774856b769c67f59791a217593be0132e0433 - md5: 1467c9c730b2fba872caba9c325d3a93 + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.1.0.dev2025013105 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - - python_abi 3.12.* *_cp312 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123341772 - timestamp: 1738300734603 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.1.0.dev2025013105-3.12release.conda - sha256: 880116fc694ec36b549849a351f70e00f092e9de19a17862f76184672ae2bc83 - md5: 8493ea4815ffa8ae223182f94a7a6ecc + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.1.0.dev2025013105 release - - python - - fastapi - - httpx - - huggingface_hub + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 - numpy >=1.18,<2.0 - - opentelemetry-api + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 - - opentelemetry-sdk >=1.27.0 - - pillow - - pydantic-settings >=2.4.0,<3 - - pydantic >=2.4.0,<3 - - pyinstrument - - python-json-logger - - sse-starlette >=2.1.3,<3 - - transformers - - typing_extensions - - uvicorn - - python_abi 3.12.* *_cp312 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 108536428 - timestamp: 1738349723783 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.1.0.dev2025013105-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: 0c8bbcd2d1133b99b54ebff3c8f5461c025c9de38bd8b6a65b5dc01f285dfa22 - md5: 01c6b9f78100a28719df93826b30be0d + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -5782,126 +2639,33 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - typing_extensions >=v4.12.2 - python license: MIT - size: 130813 - timestamp: 1738300734602 -- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 - md5: 592132998493b3ff25fd7479396e8351 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14465 - timestamp: 1733255681319 -- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.1-pyhd8ed1ab_0.conda - sha256: b82ceee187e715a287d2e1dc2d79dd2c68f84858e9b9dbac38df3d48a6f426d9 - md5: 6e6b93442c2ab2f9902a3637b70c720f + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.2-pyhd8ed1ab_0.conda + sha256: 63d5308ac732b2f8130702c83ee40ce31c5451ebcb6e70075b771cc8f7df0156 + md5: 0982b0f06168fe3421d09f70596ca1f0 depends: - python >=3.9 - typing_extensions license: BSD-3-Clause license_family: BSD - size: 68935 - timestamp: 1738085278568 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.1.0.dev2025013105-release.conda + size: 68903 + timestamp: 1739952304731 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 122b3ad0404caebf7c5271d75ae5504f228795f529b98be2011d1a1cdc71f93d - md5: f218b84b9f1baa40269eaa760534be98 + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.1.0.dev2025013105 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22925 - timestamp: 1738300734602 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda - sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 - md5: 5b5e3267d915a107eca793d52e1b780a - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 61507 - timestamp: 1733913288935 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda - sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e - md5: dcf3ae213cf0ab40ebcc10452e1ed9fa - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 63077 - timestamp: 1733913233032 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 - md5: 0048335516fed938e4dd2c457b4c5b9b - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 55968 - timestamp: 1729065664275 -- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda - sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e - md5: 5a64b9f44790d9a187a85366dd0ffa8d - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 335666 - timestamp: 1695459025249 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda - sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f - md5: 173a1692d2b3ddc265dc6afd21a869b3 - depends: - - dill >=0.3.6 - - libgcc-ng >=12 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 336110 - timestamp: 1695459137796 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda - sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 - md5: 910ef2223c71902175418d9163152788 - depends: - - dill >=0.3.6 - - python >=3.12.0rc3,<3.13.0a0 - - python >=3.12.0rc3,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 335147 - timestamp: 1695459275360 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -6005,43 +2769,6 @@ packages: license_family: BSD size: 11543 timestamp: 1733325673691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 122743 - timestamp: 1723652407663 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 - md5: f2bd10ff23ab5c87327439c4499b3f3e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 122755 - timestamp: 1723652622631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 - depends: - - __osx >=11.0 - - libcxx >=16 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 123250 - timestamp: 1723652704997 - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 md5: e7f89ea5f7ea9401642758ff50a2d9c1 @@ -6110,55 +2837,9 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 - md5: 9e5816bc95d285c115a3ebc2f8563564 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 342988 - timestamp: 1733816638720 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d - md5: 04231368e4af50d11184b50e14250993 - depends: - - libgcc >=13 - - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 377796 - timestamp: 1733816683252 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 - md5: 4b71d78648dbcf68ce8bf22bb07ff838 - depends: - - __osx >=11.0 - - libcxx >=18 - - libpng >=1.6.44,<1.7.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libzlib >=1.3.1,<2.0a0 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 319362 - timestamp: 1733816781741 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda - sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f - md5: 4ce6875f75469b2757a65e10a5d05e31 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 depends: - __glibc >=2.17,<3.0.a0 - ca-certificates @@ -6167,11 +2848,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 2937158 - timestamp: 1736086387286 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-hd08dc88_1.conda - sha256: 60d34454b861501d7355f25a7b39fdb5de8d56fca49b5bcbe8b8142b7d82dce4 - md5: e21c4767e783a58c373fdb99de6211bf + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d depends: - ca-certificates - libgcc >=13 @@ -6179,11 +2860,11 @@ packages: platform: linux license: Apache-2.0 license_family: Apache - size: 3469279 - timestamp: 1736088141230 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h81ee809_1.conda - sha256: 97772762abc70b3a537683ca9fc3ff3d6099eb64e4aba3b9c99e6fce48422d21 - md5: 22f971393637480bda8c679f374d8861 + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e depends: - __osx >=11.0 - ca-certificates @@ -6191,147 +2872,8 @@ packages: platform: osx license: Apache-2.0 license_family: Apache - size: 2936415 - timestamp: 1736086108693 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.29.0-pyhd8ed1ab_1.conda - sha256: 296280c8ace35c0a1cf72bed1077f248b3af903c3bf92332f1783a207cb5abdb - md5: 307b05402c1a382f2f09426492dee8f8 - depends: - - deprecated >=1.2.6 - - importlib-metadata >=6.0,<=8.5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 44166 - timestamp: 1734132973331 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.29.0-pyhd8ed1ab_0.conda - sha256: ae9776efe52564e0d6711cfcee7c54439273e57a3999f7f796f66e862f58aae9 - md5: 0c02e74d26bce3fec93b227cf7ea6e6b - depends: - - backoff >=1.10.0,<3.0.0 - - opentelemetry-proto 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 18922 - timestamp: 1734310457116 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.29.0-pyhd8ed1ab_1.conda - sha256: 5d61db9d5b4f91b3932f5f2348920d5b7fdaa09e52c8ea054cf7bf3f21677c9c - md5: 223f4e56a29601c887f0dc467034af5b - depends: - - deprecated >=1.2.6 - - googleapis-common-protos >=1.52,<2.dev0 - - opentelemetry-api >=1.15,<2.dev0 - - opentelemetry-exporter-otlp-proto-common 1.29.0 - - opentelemetry-proto 1.29.0 - - opentelemetry-sdk 1.29.0 - - python >=3.9 - - requests >=2.7,<3.dev0 - license: Apache-2.0 - license_family: APACHE - size: 17147 - timestamp: 1734345675510 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-1.12.0rc1-pyhd8ed1ab_0.conda - sha256: b8239230dbbdb491401e41b53bd9f21d60551cedef1a8d5807fca1bf9bdd331c - md5: 1ddc95052b31147d1e10d818cf519cf5 - depends: - - opentelemetry-api >=1.10.0 - - opentelemetry-sdk >=1.10.0 - - prometheus_client >=0.5.0,<1.0.0 - - python >=3.6 - license: Apache-2.0 - license_family: APACHE - size: 14721 - timestamp: 1695214221489 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.29.0-pyhd8ed1ab_0.conda - sha256: 200a7cb8acc8a0ddd6ef55c5460cec871b6a265929b240a0296c0ccb9c8d9758 - md5: e2a6d2ad10b813c7fdc1c64aac376128 - depends: - - protobuf <6.0,>=5.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 37235 - timestamp: 1734291034372 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.29.0-pyhd8ed1ab_0.conda - sha256: 7b36629d8b8be8a019fcfd1518d7b7f862dd25de96f8adcadb93e4fd12cf9bd6 - md5: 2a8893f06e6ebda4bfa78875bc923ea4 - depends: - - opentelemetry-api 1.29.0 - - opentelemetry-semantic-conventions 0.50b0 - - python >=3.9 - - typing-extensions >=3.7.4 - - typing_extensions >=3.7.4 - license: Apache-2.0 - license_family: APACHE - size: 77645 - timestamp: 1734297838999 -- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.50b0-pyh3cfb1c2_0.conda - sha256: 6526e70368d5bf66ef0eaa51fb800d53782dde71a24bd38f40139919a6f784dc - md5: f7111fa4188d646c8108e232d024cb99 - depends: - - deprecated >=1.2.6 - - opentelemetry-api 1.29.0 - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 86084 - timestamp: 1734208980168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda - sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc - md5: 4f6f9f3f80354ad185e276c120eac3f0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1188881 - timestamp: 1735630209320 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda - sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 - md5: d19f01b42e5d6a2908b65df435aff42f - depends: - - libgcc >=13 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 1167714 - timestamp: 1735630248837 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda - sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 - md5: 24b1897c0d24afbb70704ba998793b78 - depends: - - __osx >=11.0 - - libcxx >=18 - - libprotobuf >=5.28.3,<5.28.4.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.10.0,<1.11.0a0 - - snappy >=1.2.1,<1.3.0a0 - - tzdata - - zstd >=1.5.6,<1.6.0a0 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 438520 - timestamp: 1735630624140 + size: 2934522 + timestamp: 1739301896733 - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c md5: e51f1e4089cad105b6cac64bd8166587 @@ -6351,62 +2893,6 @@ packages: license_family: APACHE size: 60164 timestamp: 1733203368787 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda - sha256: 80fd53b68aa89b929d03874b99621ec8cc6a12629bd8bfbdca87a95f8852af96 - md5: ae00b61f3000d2284d1f2584d4dfafa8 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15458981 - timestamp: 1715898284697 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.2-py312h14eacfc_1.conda - sha256: d24c1a6e362d3f1034be308406b05a446c06f8ec974178581c7a3a13fc0110aa - md5: ea4fd304d3cd65f0ddf0dd3c46e0703a - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 15203830 - timestamp: 1715898319015 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.2-py312h8ae5369_1.conda - sha256: 664bf370d1e254f29fab3b9834ae5f692a59f7e35c64c61d9a9b9989831fd721 - md5: b38af0cd7ae3616c90a2511272385941 - depends: - - __osx >=11.0 - - libcxx >=16 - - numpy >=1.19,<3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python-dateutil >=2.8.1 - - python-tzdata >=2022a - - python_abi 3.12.* *_cp312 - - pytz >=2020.1 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 14476760 - timestamp: 1715898136109 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -6452,71 +2938,6 @@ packages: license_family: MIT size: 11748 timestamp: 1733327448200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda - sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 - md5: d3894405f05b2c0f351d5de3ae26fa9c - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: x86_64 - platform: linux - license: HPND - size: 42749785 - timestamp: 1735929845390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda - sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 - md5: 77e0ec0a6fc847d317f204aa15b59f6b - depends: - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: aarch64 - platform: linux - license: HPND - size: 41362848 - timestamp: 1735932311857 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda - sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee - md5: 94d6ba8cd468668a9fb04193b0f4b36e - depends: - - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - lcms2 >=2.16,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.5.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openjpeg >=2.5.3,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - arch: arm64 - platform: osx - license: HPND - size: 42852329 - timestamp: 1735930118976 - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_2.conda sha256: da8c8888de10c1e4234ebcaa1550ac2b4b5408ac20f093fe641e4bc8c9c9f3eb md5: 04e691b9fadd93a8a9fad87a81d4fd8f @@ -6528,69 +2949,23 @@ packages: license_family: MIT size: 1245116 timestamp: 1734466348103 -- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda - sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 - md5: 5a5870a74432aa332f7d32180633ad05 - depends: - - python >=3.9 - license: MIT AND PSF-2.0 - size: 10693 - timestamp: 1733344619659 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda - sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 - md5: 577852c7e53901ddccc7e6a9959ddebe - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 20448 - timestamp: 1733232756001 -- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc - md5: a83f6a2fdc079e643237887a37460668 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 199544 - timestamp: 1730769112346 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda - sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 - md5: 10f4301290e51c49979ff98d1bdf2556 - depends: - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 211335 - timestamp: 1730769181127 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff - md5: 7172339b49c94275ba42fec3eaeda34f +- conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 depends: - - __osx >=11.0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - zlib - arch: arm64 - platform: osx + - python >=3.9 + license: MIT AND PSF-2.0 + size: 10693 + timestamp: 1733344619659 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 license: MIT license_family: MIT - size: 173220 - timestamp: 1730769371051 + size: 20448 + timestamp: 1733232756001 - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab md5: 3e01e386307acc60b2f89af0b2e161aa @@ -6612,102 +2987,9 @@ packages: license_family: BSD size: 271905 timestamp: 1737453457168 -- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda - sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb - md5: 349635694b4df27336bc15a49e9220e9 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52947 - timestamp: 1737635699390 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda - sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb - md5: 533b07e9fd835938f465225613825eee - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 52776 - timestamp: 1737635802135 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda - sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d - md5: 83678928c58c9ae76778a435b6c7a94a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 50942 - timestamp: 1737635896600 -- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda - sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb - md5: 9d7e427d159c1b2d516cc047ff177c48 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 464794 - timestamp: 1731366525051 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda - sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 - md5: 06513608c94fb1c1b17136ace77063a9 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 473242 - timestamp: 1731366577844 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda - sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 - md5: 5afbe52a59f04dd1fe566d0d17590d7e - depends: - - __osx >=11.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libprotobuf 5.28.3 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 448803 - timestamp: 1731367010746 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda - sha256: 55d4fd0b294aeada0d7810fcc25503b59ec34c4390630789bd61c085b9ce649f - md5: add2c79595fa8a9b6d653d7e4e2cf05f +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 @@ -6717,11 +2999,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 487053 - timestamp: 1735327468212 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-6.1.1-py312hb2c0f52_0.conda - sha256: b2db43b7a2d01b998dadd91dd19c2de1f3778b5f8b7bf90020e35acf577cf79e - md5: 3bd3fe4f02e4ff211d9d35b6a3aed824 + size: 466219 + timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + sha256: 2a4f1ad69b16b9843f90adf5b39418c635835605bd2b300f55a8432c5ee22296 + md5: 1195731cd361196f9e352341a764fccb depends: - libgcc >=13 - python >=3.12,<3.13.0a0 @@ -6731,11 +3013,11 @@ packages: platform: linux license: BSD-3-Clause license_family: BSD - size: 487185 - timestamp: 1735327601306 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-6.1.1-py312hea69d52_0.conda - sha256: 90332053dad4056fe752217fa311ffa61cb37dc693b1721e37580e71a2a6fe04 - md5: 90724dac996a4e9d629a88a4b1ffe694 + size: 467245 + timestamp: 1740663309651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + sha256: cb11dcb39b2035ef42c3df89b5a288744b5dcb5a98fb47385760843b1d4df046 + md5: 0f461bd37cb428dc20213a08766bb25d depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -6745,42 +3027,8 @@ packages: platform: osx license: BSD-3-Clause license_family: BSD - size: 495397 - timestamp: 1735327574477 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba - md5: bb5a90c93e3bac3d5690acf76b4a6386 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 8342 - timestamp: 1726803319942 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 - md5: 415816daf82e0b23a736a069a75e9da7 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 8381 - timestamp: 1726802424786 + size: 476376 + timestamp: 1740663381256 - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 md5: 7d9daffbb8d8e0af0f769dbbcd173a54 @@ -6798,117 +3046,6 @@ packages: license_family: MIT size: 16668 timestamp: 1733569518868 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.0-py312h7900ff3_0.conda - sha256: 7d98e626ec65b882341482ad15ecb7a670ee41dbaf375aa660ba8b7d0a940504 - md5: 14f86e63b5c214dd9fb34e5472d4bafc - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25289 - timestamp: 1737128438818 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.0-py312h8025657_0.conda - sha256: 3a73d3d15031586214381edf5410a6920c1f75f52a8d8b994722b106d9a50150 - md5: a86fa414c44b7e3ee054cc385c79a822 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 25496 - timestamp: 1737129041038 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.0-py312h1f38498_0.conda - sha256: 9d693901833c2ff4e5d67e1f2f6df50f699e1cec2f580c26d42299654830855a - md5: bd5e025292ff1127aa1534b59e55c4d0 - depends: - - libarrow-acero 19.0.0.* - - libarrow-dataset 19.0.0.* - - libarrow-substrait 19.0.0.* - - libparquet 19.0.0.* - - pyarrow-core 19.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 25428 - timestamp: 1737128284082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.0-py312h01725c0_0_cpu.conda - sha256: 81178d0de0ac851a0a78e09c81ad92274cf770a38b28acdf53a0cfb2122d15aa - md5: 7ab1143b9ac1af5cc4a630706f643627 - depends: - - __glibc >=2.17,<3.0.a0 - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5230953 - timestamp: 1737128097002 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.0-py312h66f7834_0_cpu.conda - sha256: 17ff419abfe9596f77857dfa635538200427d87283c28e64920d10d6533ec30e - md5: ce51dbcfeae8709f0b94c78eabe7cf5e - depends: - - libarrow 19.0.0.* *cpu - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - numpy >=1.21,<3 - - apache-arrow-proc =*=cpu - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 5023430 - timestamp: 1737627066264 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.0-py312hc40f475_0_cpu.conda - sha256: 6303fe1c3e6d36273b72f0eeb3f19897d2376d57fe8c757f55dcbfbaa5cd6840 - md5: df502157843a7b1d90af04803767be15 - depends: - - __osx >=11.0 - - libarrow 19.0.0.* *cpu - - libcxx >=18 - - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - apache-arrow-proc =*=cpu - - numpy >=1.21,<3 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: APACHE - size: 4393075 - timestamp: 1737128225546 - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef @@ -6919,81 +3056,6 @@ packages: license_family: BSD size: 110100 timestamp: 1733195786147 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda - sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 - md5: c69f87041cf24dfc8cb6bf64ca7133c7 - depends: - - annotated-types >=0.6.0 - - pydantic-core 2.27.2 - - python >=3.9 - - typing-extensions >=4.6.1 - - typing_extensions >=4.12.2 - license: MIT - license_family: MIT - size: 296841 - timestamp: 1737761472006 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda - sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 - md5: bae01b2563030c085f5158c518b84e86 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 1641402 - timestamp: 1734571789895 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda - sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 - md5: 9677f6ab4bf27ba3c2aee70d08c7b27c - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 1505076 - timestamp: 1734571966615 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda - sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 - md5: dcb307e02f17d38c6e1cbfbf8c602852 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - typing-extensions >=4.6.0,!=4.7.0 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 1593461 - timestamp: 1734571986644 -- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.7.1-pyh3cfb1c2_0.conda - sha256: 082fb1ec29917d2c9ed6a862cb8eb9beb88c208ea62c9fef1aeb5f4f3e0e0b06 - md5: d71d76b62bed332b037d7adfc0f3989a - depends: - - pydantic >=2.7.0 - - python >=3.9 - - python-dotenv >=0.21.0 - license: MIT - license_family: MIT - size: 31822 - timestamp: 1735650532951 - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b md5: 232fb4577b6687b2d503ef8e254270c9 @@ -7003,48 +3065,6 @@ packages: license_family: BSD size: 888600 timestamp: 1736243563082 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda - sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 - md5: 9f1d7b421e4c8fd00009490613db64d4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 182333 - timestamp: 1737774425235 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda - sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a - md5: 90f5e9e04b1ecf25ad3f28b606f63742 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 183988 - timestamp: 1737774588265 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda - sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 - md5: 07b0eb9b6bd91dfa87f95032825690dc - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 182524 - timestamp: 1737774624030 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-11.0-py312hb9d441b_0.conda sha256: 7805d910dd6ac686e2f780c879a986f35d7a4c73f4236c956c03bdcb26bec421 md5: 0726db04477a28c51d1a260afb356b67 @@ -7087,10 +3107,9 @@ packages: license_family: BSD size: 21085 timestamp: 1733217331982 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda - build_number: 1 - sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 - md5: 7fd2fd79436d9b473812f14e86746844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -7098,14 +3117,14 @@ packages: - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -7114,26 +3133,25 @@ packages: arch: x86_64 platform: linux license: Python-2.0 - size: 31565686 - timestamp: 1733410597922 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.8-h1683364_1_cpython.conda - build_number: 1 - sha256: 85573582d5b0f79923fed0a8365d3d74d21eee9f0a5fa1b9345f191e006363ab - md5: 09ec612ea05370989eaa3d81abf0f369 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 depends: - bzip2 >=1.0.8,<2.0a0 - ld_impl_linux-aarch64 >=2.36.1 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - - liblzma >=5.6.3,<6.0a0 + - liblzma >=5.6.4,<6.0a0 - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.48.0,<4.0a0 - libuuid >=2.38.1,<3.0a0 - libxcrypt >=4.4.36 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -7142,22 +3160,21 @@ packages: arch: aarch64 platform: linux license: Python-2.0 - size: 13760816 - timestamp: 1733407890896 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.8-hc22306f_1_cpython.conda - build_number: 1 - sha256: 7586a711b1b08a9df8864e26efdc06980bdfb0e18d5ac4651d0fee30a8d3e3a0 - md5: 54ca5b5d92ef3a3ba61e195ee882a518 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - liblzma >=5.6.3,<6.0a0 - - libsqlite >=3.47.0,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.4.1,<4.0a0 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata @@ -7166,8 +3183,8 @@ packages: arch: arm64 platform: osx license: Python-2.0 - size: 12998673 - timestamp: 1733408900971 + size: 12947786 + timestamp: 1739520092196 - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 md5: 5ba79d7c71f03c678c8ead841f347d6e @@ -7178,95 +3195,24 @@ packages: license_family: APACHE size: 222505 timestamp: 1733215763718 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda - sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 - md5: e5c6ed218664802d305e79cc2d4491de - depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 24215 - timestamp: 1733243277223 - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c depends: - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 226259 - timestamp: 1733236073335 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda - sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca - md5: a61bf9ec79426938ff785eb69dbb1960 - depends: - - python >=3.6 - license: BSD-2-Clause - license_family: BSD - size: 13383 - timestamp: 1677079727691 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda - sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca - md5: a28c984e0429aff3ab7386f7de56de6f - depends: - - python >=3.9 - license: Apache-2.0 - license_family: Apache - size: 27913 - timestamp: 1734420869885 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda - sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 - md5: 392c91c42edd569a7ec99ed8648f597a - depends: - - python >=3.9 - license: Apache-2.0 - license_family: APACHE - size: 143794 - timestamp: 1737541204030 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_1.conda - sha256: 20851b1e59fee127d49e01fc73195a88ab0779f103b7d6ffc90d11142a83678f - md5: 39aed2afe4d0cf76ab3d6b09eecdbea7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 23162 - timestamp: 1725272139519 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_1.conda - sha256: 0fa5ba80073a43391ee90303814adbc9fd826175de1fdac273ba0e5b711aa255 - md5: 591c4ae6d8338dfd07b951e00433a405 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: aarch64 - platform: linux - license: BSD-2-Clause + - python >=3.9 + license: BSD-3-Clause license_family: BSD - size: 23589 - timestamp: 1725273317965 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312h024a12e_1.conda - sha256: 28204ef48f028a4d872e22040da0dad7ebd703549b010a1bb511b6dd94cf466d - md5: 266fe1ae54a7bb17990206664d0f0ae4 + size: 226259 + timestamp: 1733236073335 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - xxhash >=0.8.2,<0.8.3.0a0 - arch: arm64 - platform: osx + - python >=3.6 license: BSD-2-Clause license_family: BSD - size: 21765 - timestamp: 1725272382968 + size: 13383 + timestamp: 1677079727691 - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda build_number: 5 sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 @@ -7407,74 +3353,41 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda - sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 - md5: e84ddf12bde691e8ec894b00ea829ddf - depends: - - libre2-11 2024.07.02 hbbce691_2 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26786 - timestamp: 1735541074034 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda - sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e - md5: 1bf0135339b4a7419a198a795d2d4be0 - depends: - - libre2-11 2024.07.02 h18dbdb1_2 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 26830 - timestamp: 1735540999398 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda - sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb - md5: 7a8b4ad8c58a3408ca89d78788c78178 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libre2-11 2024.07.02 h07bc746_2 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 26861 - timestamp: 1735541088455 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 - depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.36.2-pyh29332c3_0.conda sha256: e20909f474a6cece176dfc0dc1addac265deb5fa92ea90e975fbca48085b20c3 md5: 9140f1c09dd5489549c6a33931b943c7 @@ -7488,48 +3401,6 @@ packages: license_family: MIT size: 51668 timestamp: 1737836872415 -- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda - sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b - md5: 647770db979b43f9c9ca25dcfa7dc4e4 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Python-2.0 - license_family: PSF - size: 402821 - timestamp: 1730952378415 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda - sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 - md5: fa8b589107567f532fa1380e66f91776 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Python-2.0 - license_family: PSF - size: 398947 - timestamp: 1730952477463 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda - sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 - md5: e73cda1f18846b608284bd784f061eac - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Python-2.0 - license_family: PSF - size: 366374 - timestamp: 1730952427552 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad md5: a9b9368f3701a417eac9edbcae7cb737 @@ -7564,38 +3435,13 @@ packages: license_family: MIT size: 7818 timestamp: 1598024297745 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda - sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 - md5: 7aed65d4ff222bfb7335997aa40b7da5 - depends: - - markdown-it-py >=2.2.0 - - pygments >=2.13.0,<3.0.0 - - python >=3.9 - - typing_extensions >=4.0.0,<5.0.0 - license: MIT - license_family: MIT - size: 185646 - timestamp: 1733342347277 -- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda - sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 - md5: 4ba15ae9388b67d09782798347481f69 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.23.1-py312h3b7be25_0.conda + sha256: 0378f8010ef166cea7fcb0d502e3c85fd96442e445aab7e66f8702deb9ab1e26 + md5: b9cb8c7bcbe3df8e640b244ed096b8e2 depends: - - python >=3.9 - - rich >=13.7.1 - - click >=8.1.7 - - typing_extensions >=4.12.2 - python - license: MIT - license_family: MIT - size: 17357 - timestamp: 1733750834072 -- conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda - sha256: e8662d21ca3c912ac8941725392b838a29458b106ef22d9489cdf0f8de145fad - md5: bfb49da0cc9098597d527def04d66f8b - depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 @@ -7603,14 +3449,14 @@ packages: platform: linux license: MIT license_family: MIT - size: 354410 - timestamp: 1733366814237 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.22.3-py312ha4e36d7_0.conda - sha256: bd8215aea86b57f7d036d53eee813a544736e94783faeb7b928931fca45715f8 - md5: 4d41b57d0d3933b9cab7ac8c05745123 + size: 394314 + timestamp: 1740153296343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rpds-py-0.23.1-py312he7a34ca_0.conda + sha256: a25be7524da46719fb5badcd388cf9ff9376250830a07bbaad44a69b915f077c + md5: 9925c3b64c5a8a096081b0e64d5fd2f6 depends: + - python - libgcc >=13 - - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 @@ -7618,15 +3464,15 @@ packages: platform: linux license: MIT license_family: MIT - size: 348424 - timestamp: 1733368364148 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.22.3-py312hcd83bfe_0.conda - sha256: 0a8b50bf22400004a706ba160d7cb31f82b8d8c328a59aec73a9e0d3372d1964 - md5: 2f7c4d01946fa2ce73d7ef3eeb041877 + size: 397491 + timestamp: 1740153468896 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.23.1-py312hd60eec9_0.conda + sha256: 9b68bfd5dcd50a0e6c67a2aee42e15bb6d344357361e936fd6b93c9e4eaf0d69 + md5: 21bfb8afb20f48a6c60e83a2f01d7034 depends: + - python - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - python 3.12.* *_cpython - python_abi 3.12.* *_cp312 constrains: - __osx >=11.0 @@ -7634,166 +3480,189 @@ packages: platform: osx license: MIT license_family: MIT - size: 318920 - timestamp: 1733367225496 -- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda - sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 - md5: 5e8060d52f676a40edef0006a75c718f + size: 367762 + timestamp: 1740153151756 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 + md5: 938c8de6b9de091997145b3bf25cdbf9 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - __linux + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 22736 + timestamp: 1733322148326 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda + sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 + md5: e67b1b1fa7a79ff9e8e326d0caf55854 + depends: + - __osx + - pyobjc-framework-cocoa + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 23100 + timestamp: 1733322309409 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 arch: x86_64 platform: linux license: Apache-2.0 license_family: Apache - size: 356213 - timestamp: 1737146304079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda - sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 - md5: 1517c0518f8a06a48a15f41d94252874 + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 depends: - - libgcc >=13 - - openssl >=3.4.0,<4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 arch: aarch64 platform: linux license: Apache-2.0 license_family: Apache - size: 352811 - timestamp: 1737146319512 -- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.2-py312h12e396e_0.conda - sha256: 98b8dfa5eec083e0b3ace00906a7f7e748b1e2446dca17e87473f43278fcc036 - md5: 999ca9d87d2bb8b4c01e62c755b928cf + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: x86_64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 424409 - timestamp: 1736383159339 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.2-py312h8cbf658_0.conda - sha256: 3e230060c1366cbaf03f4315b021dfe47f5147f3af88f17975d661c08fe15ad3 - md5: 2c77c961c4e813b1d05122ac4d803d80 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b depends: - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 arch: aarch64 platform: linux license: Apache-2.0 - license_family: APACHE - size: 408166 - timestamp: 1736383184569 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.2-py312hcd83bfe_0.conda - sha256: 0aeb3e654095ca0261d560d1fc05912d0e94d547a7dc435d7f4cedeba966d176 - md5: fc0383682805e293eba9b8afc9ad0931 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d depends: - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 arch: arm64 platform: osx license: Apache-2.0 - license_family: APACHE - size: 378060 - timestamp: 1736383410115 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda - sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 - md5: 938c8de6b9de091997145b3bf25cdbf9 - depends: - - __linux - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 22736 - timestamp: 1733322148326 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh31c8845_1.conda - sha256: 5282eb5b462502c38df8cb37cd1542c5bbe26af2453a18a0a0602d084ca39f53 - md5: e67b1b1fa7a79ff9e8e326d0caf55854 - depends: - - __osx - - pyobjc-framework-cocoa - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 23100 - timestamp: 1733322309409 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.0-pyhff2d567_0.conda - sha256: e0778e4f276e9a81b51c56f51ec22a27b4d8fc955abc0be77ad09ca9bea06bb9 - md5: 8f28e299c11afdd79e0ec1e279dcdc52 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 775598 - timestamp: 1736512753595 -- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda - sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef - md5: 7c3c2a0f3ebdea2bbc35538d162b43bf - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 14462 - timestamp: 1733301007770 -- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db - md5: a451d576819089b0d672f18768be0f65 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 16385 - timestamp: 1733381032766 -- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 - md5: 3b3e64af585eadfb52bb90b553db5edf + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 depends: - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 - libstdcxx >=13 arch: x86_64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 42739 - timestamp: 1733501881851 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af - md5: 2fcc6cd1e5550deb509073fd2e6693e1 + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 - libstdcxx >=13 arch: aarch64 platform: linux - license: BSD-3-Clause - license_family: BSD - size: 43032 - timestamp: 1733501964775 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f - md5: ded86dee325290da2967a3fea3800eb5 + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f depends: - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 arch: arm64 platform: osx - license: BSD-3-Clause - license_family: BSD - size: 35857 - timestamp: 1733502172664 + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 md5: bf7a226e58dfb8346c70df36065d86c9 @@ -7812,17 +3681,6 @@ packages: license_family: MIT size: 36754 timestamp: 1693929424267 -- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda - sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc - md5: c1ef6bc13dd2caa4b406fb3cb06c2791 - depends: - - anyio >=4.7.0 - - python >=3.9 - - starlette >=0.41.3 - license: BSD-3-Clause - license_family: BSD - size: 15324 - timestamp: 1735126414893 - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 md5: b1b505328da7a6b246787df4b5a49fbc @@ -7835,17 +3693,6 @@ packages: license_family: MIT size: 26988 timestamp: 1733569565672 -- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda - sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a - md5: 9b3a68bc7aed7949ef86f950993261f4 - depends: - - anyio >=3.6.2,<5 - - python >=3.9 - - typing_extensions >=3.10.0 - license: BSD-3-Clause - license_family: BSD - size: 57934 - timestamp: 1737824077668 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c md5: efba281bbdae5f6b0a1d53c6d4a97c93 @@ -7897,80 +3744,24 @@ packages: md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - arch: aarch64 - platform: linux - license: TCL - license_family: BSD - size: 3351802 - timestamp: 1695506242997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 - md5: b50a57ba89c32b62428b71a875291c9b - depends: - - libzlib >=1.2.13,<2.0.0a0 - arch: arm64 - platform: osx - license: TCL - license_family: BSD - size: 3145523 - timestamp: 1699202432999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda - sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 - md5: f953aa733207f3d37acf4a3efbedba89 - depends: - - __glibc >=2.17,<3.0.a0 - - huggingface_hub >=0.16.4,<1.0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: APACHE - size: 2258007 - timestamp: 1732734202127 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda - sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 - md5: 077f48c9e0c08a30d842e15c51df4143 - depends: - - huggingface_hub >=0.16.4,<1.0 - - libgcc >=13 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 + - libzlib >=1.2.13,<2.0.0a0 arch: aarch64 platform: linux - license: Apache-2.0 - license_family: APACHE - size: 2331194 - timestamp: 1732734303196 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda - sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 - md5: 4c732c74b485ef7ac8ec1c548dd45e8e + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b depends: - - __osx >=11.0 - - huggingface_hub >=0.16.4,<1.0 - - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 arch: arm64 platform: osx - license: Apache-2.0 - license_family: APACHE - size: 1931389 - timestamp: 1732734727624 + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e md5: ac944244f1fed2eb49bae07193ae8215 @@ -8039,62 +3830,6 @@ packages: license_family: BSD size: 110051 timestamp: 1733367480074 -- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.48.2-pyhd8ed1ab_0.conda - sha256: 67b19c3d6befcc538df3e6d8dc7c4a2b6c7e35b7c1666da790cea4166f1b768a - md5: 717807c559e9a30fea4850ab8881adcb - depends: - - datasets !=2.5.0 - - filelock - - huggingface_hub >=0.23.0,<1.0 - - numpy >=1.17 - - packaging >=20.0 - - python >=3.9 - - pyyaml >=5.1 - - regex !=2019.12.17 - - requests - - safetensors >=0.4.1 - - tokenizers >=0.21,<0.22 - - tqdm >=4.27 - license: Apache-2.0 - license_family: APACHE - size: 3416794 - timestamp: 1738278628376 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.1-pyhd8ed1ab_0.conda - sha256: ef695490e895c2ad552c77ec497b899b09fd4ad4ab07edcf5649f5994cf92a35 - md5: 170a0398946d8f5b454e592672b6fc20 - depends: - - python >=3.9 - - typer-slim-standard 0.15.1 hd8ed1ab_0 - license: MIT - license_family: MIT - size: 56175 - timestamp: 1733408582623 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.1-pyhd8ed1ab_0.conda - sha256: d4965516f35e0805199de6596c4ac76c4ad3d6b012be35e532102f9e53ecb860 - md5: 0218b16f5a1dd569e575a7a6415489db - depends: - - click >=8.0.0 - - python >=3.9 - - typing_extensions >=3.7.4.3 - constrains: - - rich >=10.11.0 - - typer >=0.15.1,<0.15.2.0a0 - - shellingham >=1.3.0 - license: MIT - license_family: MIT - size: 43592 - timestamp: 1733408569554 -- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.1-hd8ed1ab_0.conda - sha256: f31c56fe98315da8b9ce848256c17e0b9f87896b41a6ccf0c9cc74644dcef20f - md5: 4e603c43bfdfc7b533be087c3e070cc9 - depends: - - rich - - shellingham - - typer-slim 0.15.1 pyhd8ed1ab_0 - license: MIT - license_family: MIT - size: 49531 - timestamp: 1733408570063 - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 @@ -8159,128 +3894,6 @@ packages: license_family: MIT size: 100102 timestamp: 1734859520452 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda - sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa - md5: 5d448feee86e4740498ec8f8eb40e052 - depends: - - __unix - - click >=7.0 - - h11 >=0.8 - - python >=3.9 - - typing_extensions >=4.0 - license: BSD-3-Clause - license_family: BSD - size: 48643 - timestamp: 1734293057914 -- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda - sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec - md5: 32a94143a7f65d76d2d5da37dcb4ed79 - depends: - - __unix - - httptools >=0.6.3 - - python-dotenv >=0.13 - - pyyaml >=5.1 - - uvicorn 0.34.0 pyh31011fe_0 - - uvloop >=0.14.0,!=0.15.0,!=0.15.1 - - watchfiles >=0.13 - - websockets >=10.4 - license: BSD-3-Clause - license_family: BSD - size: 7203 - timestamp: 1734293058849 -- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda - sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 - md5: 998e481e17c1b6a74572e73b06f2df08 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: MIT OR Apache-2.0 - size: 701355 - timestamp: 1730214506716 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda - sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 - md5: d83e107ba16c77aba2feec47b7b666a4 - depends: - - libgcc >=13 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: MIT OR Apache-2.0 - size: 655266 - timestamp: 1730214606664 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda - sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 - md5: 4f5110253ba80ebf27e55c4ab333880a - depends: - - __osx >=11.0 - - libuv >=1.49.2,<2.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: MIT OR Apache-2.0 - size: 544097 - timestamp: 1730214653726 -- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda - sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb - md5: df87129c4cb7afc4a3cbad71a1b9e223 - depends: - - __glibc >=2.17,<3.0.a0 - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 410192 - timestamp: 1736550568524 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda - sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 - md5: ed958a27e610c31de625e167d4c11a04 - depends: - - anyio >=3.0.0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __glibc >=2.17 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 403791 - timestamp: 1736550743174 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda - sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 - md5: 946eb0208d09b811a671fad9b2831f4e - depends: - - __osx >=11.0 - - anyio >=3.0.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 363822 - timestamp: 1736550859472 - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 md5: b68980f2495d096e71c7fd9d7ccf63e6 @@ -8317,48 +3930,6 @@ packages: license_family: APACHE size: 46718 timestamp: 1733157432924 -- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-14.2-py312h66e93f0_0.conda - sha256: 52092f1f811fddcbb63e4e8e1c726f32a0a1ea14c36b70982fc2021a3c010e48 - md5: 279166352304d5d4b63429e9c86fa3dc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 242949 - timestamp: 1737358315063 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-14.2-py312hb2c0f52_0.conda - sha256: 5b8273df10b85a667b4fe71788a12c33a9626723650e28f582fd56c87bad0471 - md5: d7535d5d2f8d49d625071f305d6112a1 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 244675 - timestamp: 1737358397158 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-14.2-py312hea69d52_0.conda - sha256: e5ad8c983a1669d06a6648990c0491d5469143f02003c8fd2ae7d066d7d4b086 - md5: 8757561d3ea10ba178fb7fb888f33e3a - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-3-Clause - license_family: BSD - size: 246269 - timestamp: 1737358485546 - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce md5: 75cb7132eb58d97896e173ef12ac9986 @@ -8368,147 +3939,6 @@ packages: license_family: MIT size: 62931 timestamp: 1733130309598 -- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda - sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 - md5: 669e63af87710f8d52fdec9d4d63b404 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63590 - timestamp: 1736869574299 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda - sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c - md5: 8a5c6e3f809bae085be369b62dc5d06a - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 63967 - timestamp: 1736869675870 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda - sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef - md5: e49608c832fcf438f70cbcae09c3adc5 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 61198 - timestamp: 1736869673767 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 - md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 14780 - timestamp: 1734229004433 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 - md5: d5397424399a66d33c80b1f2345a36a6 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 15873 - timestamp: 1734230458294 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d - md5: 50901e0764b7701d8ed7343496f4f301 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 13593 - timestamp: 1734229104321 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 19901 - timestamp: 1727794976192 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda - sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f - md5: 25a5a7b797fe6e084e04ffe2db02fc62 - depends: - - libgcc >=13 - arch: aarch64 - platform: linux - license: MIT - license_family: MIT - size: 20615 - timestamp: 1727796660574 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 - md5: 77c447f48cab5d3a15ac224edb86a968 - depends: - - __osx >=11.0 - arch: arm64 - platform: osx - license: MIT - license_family: MIT - size: 18487 - timestamp: 1727795205022 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.2-hd590300_0.conda - sha256: 6fe74a8fd84ab0dc25e4dc3e0c22388dd8accb212897a208b14fe5d4fbb8fc2f - md5: f08fb5c89edfc4aadee1c81d4cfb1fa1 - depends: - - libgcc-ng >=12 - arch: x86_64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 97691 - timestamp: 1689951608120 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.2-h31becfc_0.conda - sha256: 4c526aed70b579d80e5c20d32130b6bc8bde59b3250d43c2b5269755f4da8a9b - md5: bb9faf6857108a9f62ebb4dab6ef05da - depends: - - libgcc-ng >=12 - arch: aarch64 - platform: linux - license: BSD-2-Clause - license_family: BSD - size: 102442 - timestamp: 1689951682147 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.2-hb547adb_0.conda - sha256: a70f59f7221ee72c45b39a6b36a33eb9c717ba01921cce1a3c361a4676979a2e - md5: 144cd3b88706507f332f5eb5fb83a33b - arch: arm64 - platform: osx - license: BSD-2-Clause - license_family: BSD - size: 97593 - timestamp: 1689951969732 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae @@ -8540,57 +3970,6 @@ packages: license_family: MIT size: 88016 timestamp: 1641347076660 -- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda - sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce - md5: 6822c49f294d4355f19d314b8b6063d8 - depends: - - __glibc >=2.17,<3.0.a0 - - idna >=2.0 - - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 152305 - timestamp: 1737575898300 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda - sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 - md5: d14c78abdd6109e2b7162f53b6cc1e77 - depends: - - idna >=2.0 - - libgcc >=13 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: aarch64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 149654 - timestamp: 1737576065314 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda - sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e - md5: 092d3b40acc67c470f379049be343a7a - depends: - - __osx >=11.0 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - arch: arm64 - platform: osx - license: Apache-2.0 - license_family: Apache - size: 145543 - timestamp: 1737576074753 - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 md5: 3947a35e916fcc6b9825449affbf4214 @@ -8643,43 +4022,6 @@ packages: license_family: MIT size: 21809 timestamp: 1732827613585 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - arch: x86_64 - platform: linux - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 - md5: bc230abb5d21b63ff4799b0e75204783 - depends: - - libgcc >=13 - - libzlib 1.3.1 h86ecc28_2 - arch: aarch64 - platform: linux - license: Zlib - license_family: Other - size: 95582 - timestamp: 1727963203597 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 - depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 - arch: arm64 - platform: osx - license: Zlib - license_family: Other - size: 77606 - timestamp: 1727963209370 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b md5: 8b7069e9792ee4e5b4919a7a306d2e67 diff --git a/examples/notebooks/mistral7b-python-onnx.ipynb b/examples/notebooks/mistral7b-python-onnx.ipynb new file mode 100644 index 0000000000..400a4dae53 --- /dev/null +++ b/examples/notebooks/mistral7b-python-onnx.ipynb @@ -0,0 +1,404 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using Mistral-7B with MAX Engine 🏎️ on CPU\n", + "\n", + "**In this notebook we will walk through an example of using [Mistral-7B](https://huggingface.co/mistralai/Mistral-7B-v0.1) model with MAX Engine 🏎️ on CPU and float32. Check out the [roadmap](https://docs.modular.com/max/roadmap) for quantization and the GPU support.**\n", + "\n", + "The Mistral-7B-v0.1 Large Language Model (LLM) is a pretrained generative text model with 7 billion parameters. Generative text models generate the next token iteratively given a sequence of past tokens representing the input prompt plus already generated response tokens.\n", + "\n", + "Thus the underlying transformer model is invoked in each iteration of this loop until we reach the stopping condition (either the maximum number of generated tokens or a token designated as the end).\n", + "\n", + "**Caveats:**\n", + "\n", + "* **The model size is 28G**. Please make sure you have enough disk space to download the model and for the converted ONNX counterpart as we will use them later in this tutorial.\n", + "* **The runtime memory requirement is around 65G** to be able finish the notebook and run all the cells.\n", + "\n", + "First, make sure you have installed `max` as described in the [getting started](https://docs.modular.com/max/get-started/) as well as `PyTorch` and `transformers` packages" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q torch --index-url https://download.pytorch.org/whl/cpu\n", + "!python3 -m pip install -q transformers onnx" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Vanilla transformers\n", + "\n", + "Let's first see how the model generates a response using the vanilla `transformers`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "import torch\n", + "from transformers import AutoTokenizer, AutoModelForCausalLM\n", + "\n", + "PROMPT = \"Why did the chicken cross the road?\"\n", + "\n", + "hf_path = \"mistralai/Mistral-7B-v0.1\"\n", + "hfmodel = AutoModelForCausalLM.from_pretrained(hf_path)\n", + "hftokenizer = AutoTokenizer.from_pretrained(hf_path)\n", + "hftokenizer.pad_token = hftokenizer.eos_token\n", + "\n", + "# Tokenize the text prompt\n", + "input_ids = hftokenizer(PROMPT, return_tensors=\"pt\", max_length=128, truncation=True).input_ids\n", + "\n", + "# Run generation\n", + "out_ids = hfmodel.generate(input_ids=input_ids, max_new_tokens=15, do_sample=False)\n", + "\n", + "# De-tokenize the generated response\n", + "response = hftokenizer.batch_decode(out_ids.numpy(), skip_special_tokens=True)[0][len(PROMPT):]\n", + "print(\"Response:\", response)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Next token generation\n", + "\n", + "Now that we see that the model works, let's try to decompose its `hfmodel.generate` method because we will encounter it later. We should be able to get the same output as before, but by only using `forward` method of the model.\n", + "\n", + "The code below is a simplified version of the actual loop you can find in the transformer's source code. It starts by initializing the current sequense to the given prompt and then generates 10 subsequent tokens - these tokens constitute the response of the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from time import time\n", + "from transformers.generation.logits_process import LogitsProcessorList\n", + "\n", + "logits_processor = LogitsProcessorList()\n", + "\n", + "time_start = time()\n", + "current_seq = input_ids\n", + "N_TOKENS = 10\n", + "for idx in range(N_TOKENS):\n", + " # Run model's `forward` on the current sequence.\n", + " # 'logits' output would let us determine the next token for this sequence\n", + " outputs = hfmodel(current_seq, return_dict=True).logits\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + "time_finish = time()\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq.numpy(), skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {N_TOKENS / (time_finish - time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Convert to ONNX with optimum\n", + "\n", + "Great! We were able to see the same response now with using only `forward` method of our model. We're now ready to use MAX Engine 🏎️ inference.\n", + "To do that, we start by getting an ONNX version of the model. The easiest way to do it is to use HuggingFace `optimum` tool which you can install as follows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!python3 -m pip install -q optimum" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then the conversion to ONNX. This part can take a while. Also please make sure you've enough disk space." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!optimum-cli export onnx --model \"mistralai/Mistral-7B-v0.1\" \"./onnx/mistral-7b-onnx\"" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optional: Examine the ONNX model\n", + "\n", + "**Caveat: 📢 if you want to run this 👇 part you will need around 95G of memory to be able to continue finishing the notebook. Otherwise, check out the included results below.**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "import onnx\n", + "\n", + "# It will take a while to load in ONNX as well as occupying 28G more memory!\n", + "onnxmodel = onnx.load(\"./onnx/mistral-7b-onnx/model.onnx\")\n", + "\n", + "def print_dims(tensor):\n", + " dims = []\n", + " for dim in tensor.type.tensor_type.shape.dim:\n", + " if dim.HasField(\"dim_value\"):\n", + " dims.append(String(dim.dim_value))\n", + " elif dim.HasField(\"dim_param\"):\n", + " dims.append(String(dim.dim_param))\n", + " print(onnx.TensorProto.DataType.Name(tensor.type.tensor_type.elem_type), end=\" \")\n", + " print(\"[\", \", \".join(dims), \"]\")\n", + "\n", + "print(\"=== Inputs ===\")\n", + "for input_tensor in onnxmodel.graph.input:\n", + " print(input_tensor.name, end=\": \")\n", + " print_dims(input_tensor)\n", + "\n", + "print(\"\\n=== Outputs ===\")\n", + "for output_tensor in onnxmodel.graph.output:\n", + " print(output_tensor.name, end=\": \")\n", + " print_dims(output_tensor)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "=== Inputs ===\n", + "input_ids: INT64 [ batch_size, sequence_length ]\n", + "attention_mask: INT64 [ batch_size, past_sequence_length + 1 ]\n", + "position_ids: INT64 [ batch_size, sequence_length ]\n", + "past_key_values.0.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.0.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.1.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.1.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.2.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.2.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.3.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.3.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.4.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.4.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.5.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "past_key_values.5.value: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "\n", + "...\n", + "\n", + "=== Outputs ===\n", + "logits: FLOAT [ batch_size, sequence_length, 32000 ]\n", + "present.0.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.0.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.1.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.1.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.2.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.2.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.3.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.3.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.4.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.4.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.5.key: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "present.5.value: FLOAT [ batch_size, 8, past_sequence_length + 1, 128 ]\n", + "\n", + "...\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It might be quite surprising to see so many inputs and outputs in the model!\n", + "\n", + "To decode what they all mean and how they should be used we will need to look into the [documentation of the MistralModel](https://huggingface.co/docs/transformers/v4.38.2/en/model_doc/mistral#transformers.MistralModel).\n", + "\n", + "In short, we have the following inputs:\n", + "* input_ids\n", + "* position_ids\n", + "* attention_mask\n", + "* past_key_values\n", + "\n", + "And the outputs will be:\n", + "* logits\n", + "* present_key_value\n", + "\n", + "The `past_key_values.n.key` and `past_key_values.n.value` represents cached states from previous tokens in the sequence to avoid redundant recalculations, thus speeding up the generation process.\n", + "\n", + "**Note** that since ONNX doesn't support dictionaries as a input/output type, the `key_value` is expanded into 32 pairs of individual tensors (32 is the number of attention layers). The number of KV heads is 8 which are part of its [Grouped Query Attention (GQA)](https://arxiv.org/abs/2305.13245) mechanism. The GQA mechanism allows the model to achieve faster inference times by optimizing the attention mechanism.\n", + "\n", + "```\n", + "past_key_values.0.key: FLOAT [ batch_size, 8, past_sequence_length, 128 ]\n", + "```\n", + "\n", + "Moreover, the size of each key/value vector is 128.\n", + "\n", + "In order to use this model we will need to slightly modify our glue code to correctly weave all these values from each iteration to the next.\n", + "Specifically, we will need to pass the `key_values` from previous iteration to the current (for the first iteration they are initializes as empty tensors).\n", + "We will also need to correctly fill in `position_ids` and `attention_mask` tensors and update them on each iteration. We will not get into all the details of how exactly all these tensors affect the model behavior and should be used - this is an extremely interesting topic, but it is beyond the scope of this walkthrough." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## MAX Engine 🏎️\n", + "\n", + "With that we're finally ready to use the MAX Engine 🏎️ for inference.\n", + "\n", + "The code modifications follows our previous approach and is quite minimal. All we need to do is to load the ONNX model (whch can take a while) into an `InferenceSession` object and instead of using the `hfmodel` we will need to use `maxmodel.execute`, and pack the input values into a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%time\n", + "\n", + "from max import engine\n", + "# Create an InferenceSession and load the ONNX model\n", + "session = engine.InferenceSession()\n", + "maxmodel = session.load(\"./onnx/mistral-7b-onnx/model.onnx\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also quickly inspect the input and output metadata that match the ONNX version above" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for tensor in maxmodel.input_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')\n", + "\n", + "for tensor in maxmodel.output_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the how to get the response from our `maxmodel`. The token per second can be up to **2X** faster comparing to the PyTorch version. Note that this tutorial doesn't provide an accurate benchmark. For more, please check out our [performance dashboard](https://performance.modular.com/)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "inputs = {}\n", + "N_BATCH = 1\n", + "N_LAYERS = 32\n", + "N_HEADS = 8\n", + "KV_LEN = 128\n", + "# Initialize the additional layer to 0 for the first iteration:\n", + "for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + " inputs[f\"past_key_values.{i}.value\"] = torch.zeros([N_BATCH, N_HEADS, 0, KV_LEN], dtype=torch.float).numpy()\n", + "\n", + "current_seq = input_ids\n", + "\n", + "time_start = time()\n", + "for idx in range(N_TOKENS):\n", + " # Prepare inputs dictionary\n", + " inputs[\"input_ids\"] = current_seq.numpy()\n", + " inputs[\"position_ids\"] = torch.arange(inputs[\"input_ids\"].shape[1], dtype=torch.long).unsqueeze(0).numpy()\n", + " inputs[\"attention_mask\"] = torch.ones([1, inputs[\"past_key_values.0.key\"].shape[2] + inputs[\"input_ids\"].shape[1]], dtype=torch.int64).numpy()\n", + "\n", + " # Run the model with MAX engine\n", + " max_outputs = maxmodel.execute(**inputs)\n", + " outputs = torch.from_numpy(max_outputs[\"logits\"])\n", + "\n", + " # Get the newly generated next token\n", + " next_token_logits = outputs[:, -1, :]\n", + " next_tokens_scores = logits_processor(current_seq, next_token_logits)\n", + " next_tokens = torch.argmax(next_tokens_scores, dim=-1)\n", + "\n", + " print(hftokenizer.decode(next_tokens), end=' ', flush=True)\n", + "\n", + " # Append the new token to our sequence\n", + " current_seq = torch.cat([current_seq, next_tokens[:, None]], dim=-1)\n", + "\n", + " # Update the KV cache for the next iteration\n", + " for i in range(N_LAYERS):\n", + " inputs[f\"past_key_values.{i}.key\"] = max_outputs[f\"present.{i}.key\"]\n", + " inputs[f\"past_key_values.{i}.value\"] = max_outputs[f\"present.{i}.value\"]\n", + "\n", + "time_finish = time()\n", + "\n", + "print(f\"Prompt: {PROMPT}\")\n", + "print(\"Response:\", hftokenizer.batch_decode(current_seq.numpy(), skip_special_tokens=True)[0][len(PROMPT):])\n", + "print(f\"Tokens per second: {idx/(time_finish-time_start):.2f}\\n\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That is it! 🎉\n", + "\n", + "Serving an LLM has historically been not an easy task, but hopefully this example lifts the curtain on how this can be done. MAX Engine 🏎️ doesn't (yet) make this process easier, however, if you've already gone this path with ONNX or TorchScript, switching to MAX should be trivial and bring easy performance wins." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/notebooks/pixi.toml b/examples/notebooks/pixi.toml new file mode 100644 index 0000000000..a6ad3f7694 --- /dev/null +++ b/examples/notebooks/pixi.toml @@ -0,0 +1,13 @@ +[project] +name = "MAX notebooks" +version = "1.0.0" +description = "Environment for running JupyterLab" +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +python = ">=3.9,<3.13" +max = "*" +pip = ">=24.0,<25" +jupyterlab = ">=4.2.5,<5" diff --git a/examples/notebooks/roberta-python-pytorch.ipynb b/examples/notebooks/roberta-python-pytorch.ipynb new file mode 100644 index 0000000000..683efa156e --- /dev/null +++ b/examples/notebooks/roberta-python-pytorch.ipynb @@ -0,0 +1,389 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Copyright 2025 Modular, Inc: Licensed under the Apache License v2.0 with LLVM Exceptions.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# MAX Engine and PyTorch model example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The [Python API for MAX Engine](https://docs.modular.com/engine/reference/python/engine) enables you\n", + "to upgrade your runtime performance for PyTorch, TensorFlow, and ONNX models,\n", + "on a wide range of hardware, with just three lines of code (not counting the\n", + "import):\n", + "\n", + "```python\n", + "from max import engine\n", + "\n", + "# Load your model:\n", + "session = engine.InferenceSession()\n", + "model = session.load(model_path)\n", + "\n", + "# Prepare the inputs, then run an inference:\n", + "outputs = model.execute(**inputs)\n", + "\n", + "# Process the output here.\n", + "```\n", + "\n", + "That's all you need! Everything else is the usual code to prepare your\n", + "inputs and process the outputs.\n", + "\n", + "But, it's always nice to see a fully working example. So the\n", + "rest of this page shows how to run an inference using a version of\n", + "[RoBERTa from Cardiff\n", + "NLP](https://huggingface.co/cardiffnlp/twitter-roberta-base-emotion-multilabel-latest),\n", + "which is a language model trained on tweets to perform sentiment analysis.\n", + "\n", + "This example uses is a PyTorch model (which must be converted to TorchScript\n", + "format), and it's just as easy to load a model from ONNX or TensorFlow (in\n", + "SavedModel format)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Install the MAX Engine Python package" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Naturally, you first need to install the `max` Python package.\n", + "This package is not hosted in a package repository (PyPI), and can only be\n", + "installed with the `modular` CLI tool.\n", + "\n", + "For instructions, see\n", + "[Get started with MAX Engine](https://docs.modular.com/max/get-started)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Install the MAX Engine Python package\n", + "!python3 -m pip install -q --find-links \"$(modular config max.path)/wheels\" max-engine\n", + "# Install other packages\n", + "!python3 -m pip install -q transformers\n", + "!python3 -m pip install -q torch --index-url https://download.pytorch.org/whl/cpu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Import Python modules" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To start coding, we need some libraries that help us get the model and process\n", + "the input/output data.\n", + "\n", + "NOTE: Make sure you have these packages installed:\n", + "\n", + "```sh\n", + "python3 -m pip install torch transformers\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# suppress extraneous logging\n", + "import os\n", + "os.environ[\"TRANSFORMERS_VERBOSITY\"] = \"critical\"\n", + "os.environ[\"TOKENIZERS_PARALLELISM\"] = \"false\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "import torch\n", + "from transformers import AutoTokenizer, AutoModelForSequenceClassification\n", + "\n", + "from max import engine\n", + "from max.dtype import DType" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Download the model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we download the [RoBERTa model](https://huggingface.co/cardiffnlp/twitter-roberta-base-emotion-multilabel-latest)\n", + "from HuggingFace and save it in the PyTorch TorchScript format." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "HF_MODEL_NAME = \"cardiffnlp/twitter-roberta-base-emotion-multilabel-latest\"\n", + "hf_model = AutoModelForSequenceClassification.from_pretrained(HF_MODEL_NAME)\n", + "hf_model.config.return_dict = False\n", + "\n", + "# Converting model to TorchScript\n", + "model_path = Path(\"roberta.torchscript\")\n", + "batch = 1\n", + "seqlen = 128\n", + "inputs = {\n", + " \"input_ids\": torch.zeros((batch, seqlen), dtype=torch.int64),\n", + " \"attention_mask\": torch.zeros((batch, seqlen), dtype=torch.int64),\n", + "}\n", + "with torch.no_grad():\n", + " traced_model = torch.jit.trace(\n", + " hf_model, example_kwarg_inputs=inputs, strict=False\n", + " )\n", + "\n", + "torch.jit.save(traced_model, model_path)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Load and compile the model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, we load and compile the model in MAX Engine using an\n", + "[`InferenceSession`](https://docs.modular.com/engine/reference/python/engine.html#max.engine.InferenceSession).\n", + "\n", + "When loading a TorchScript model, you need to specify the shape and data type\n", + "for all input tensors. This is required because TorchScript models do not\n", + "include input spec annotations (unlike TensorFlow and ONNX models), which MAX\n", + "Engine needs to compile the model.\n", + "\n", + "To define the input specs, you need to create a list of\n", + "[`TorchInputSpec`](https://docs.modular.com/engine/reference/python/engine#max.engine.TorchInputSpec)\n", + "objects (one item for each input), and pass the list to\n", + "[`InferenceSession.load`](https://docs.modular.com/engine/reference/python/engine.html#max.engine.InferenceSession.load).\n", + "For example, here's how to declare the input specs for the RoBERTa TorchScript\n", + "model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# We use the same `inputs` that we used above to trace the model\n", + "input_spec_list = [\n", + " engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64)\n", + " for tensor in inputs.values()\n", + "]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we can load the model: (If you're loading a TensorFlow SavedModel or ONNX\n", + "model, then you don't need the `input_specs` argument.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "session = engine.InferenceSession()\n", + "model = session.load(model_path, input_specs=input_spec_list)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's two lines down, just one to go.\n", + "\n", + "NOTE: The first time you load a model, it might take a few minutes to compile it,\n", + "but this up-front cost will pay dividends in latency savings provided by\n", + "our next-generation graph compiler." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Prepare the input" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This part is your usual pre-processing. \n", + "For the RoBERTa model, we need to process the text input into a sequence of tokens, so we'll do that with [`transformers.AutoTokenizer`](https://huggingface.co/docs/transformers/main/en/model_doc/auto#transformers.AutoTokenizer).\n", + "\n", + "First, let's take a look at the model's inputs:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for tensor in model.input_metadata:\n", + " print(f'name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tells us the model needs 2 inputs. (If your model shows a dimension size\n", + "is `None`, that means it's dynamic.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "INPUT=\"There are many exciting developments in the field of AI Infrastructure!\"\n", + "\n", + "tokenizer = AutoTokenizer.from_pretrained(HF_MODEL_NAME)\n", + "inputs = tokenizer(INPUT, return_tensors=\"pt\", padding='max_length', truncation=True, max_length=seqlen)\n", + "print(inputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Run an inference" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now for that third line of code, we pass the inputs to\n", + "[`execute()`](https://docs.modular.com/engine/reference/python/engine#max.engine.Model.execute). This\n", + "function requires all inputs as keyword arguments, so we'll\n", + "unpack the `inputs` dictionary as we pass it through:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "outputs = model.execute(**inputs)\n", + "print(outputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "That's it!\n", + "\n", + "The output from [`execute()`](https://docs.modular.com/engine/reference/python/engine.html#max.engine.Model.execute) is a dictionary of output tensors, each in an `ndarray`. Let's now figure out what they say." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Process the outputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, we'll use some help from the [transformers library](https://huggingface.co/docs/transformers/main/en/model_doc/roberta#transformers.TFRobertaForSequenceClassification) to convert the output ids to labels:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Extract class prediction from output\n", + "predicted_class_id = outputs[\"result0\"].argmax(axis=-1)[0]\n", + "classification = hf_model.config.id2label[predicted_class_id]\n", + "\n", + "print(f\"The sentiment is: {classification}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ta-da! 🎉\n", + "\n", + "If you're running this notebook yourself, beware that this notebook does not\n", + "illustrate MAX Engine's runtime performance. For actual benchmark results,\n", + "check out our [performance dashboard](https://performance.modular.com).\n", + "\n", + "For more details about the inferencing API, see the [Python API reference](https://docs.modular.com/max/api/python/engine)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/offline-inference/README.md b/examples/offline-inference/README.md new file mode 100644 index 0000000000..5362bdbbb8 --- /dev/null +++ b/examples/offline-inference/README.md @@ -0,0 +1,10 @@ +# Using MAX pipelines to run LLMs offline + +Examples of using the MAX stack to directly query LLMs from python +without spinning up a webserver. + +A single Magic command runs the example: + +```sh +magic run basic +``` diff --git a/examples/offline-inference/basic.py b/examples/offline-inference/basic.py new file mode 100644 index 0000000000..028cbf6820 --- /dev/null +++ b/examples/offline-inference/basic.py @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import os + +from max.entrypoints import LLM +from max.pipelines import PipelineConfig +from max.pipelines.architectures import register_all_models +from max.serve.config import Settings + + +def main(): + register_all_models() + + model_path = "modularai/Llama-3.1-8B-Instruct-GGUF" + print(f"Loading model: {model_path}") + pipeline_config = PipelineConfig(model_path) + settings = Settings() + llm = LLM(settings, pipeline_config) + + prompts = [ + "In the beginning, there was", + "I believe the meaning of life is", + "The fastest way to learn python is", + ] + + print("Generating responses...") + responses = llm.generate(prompts, max_new_tokens=50) + + for i, (prompt, response) in enumerate(zip(prompts, responses)): + print(f"========== Response {i} ==========") + print(prompt + response) + print() + + +if __name__ == "__main__": + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + main() diff --git a/examples/offline-inference/magic.lock b/examples/offline-inference/magic.lock new file mode 100644 index 0000000000..3c530fd9ab --- /dev/null +++ b/examples/offline-inference/magic.lock @@ -0,0 +1,9000 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18074 + timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.5 + constrains: + - trio >=0.26.1 + - uvloop >=0.21 + license: MIT + license_family: MIT + size: 115305 + timestamp: 1736174485476 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 18816 + timestamp: 1733771192649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + sha256: 80a2ddb433b3d3b0abbf97febf5504cbda451e19f3a504936ef961209c647238 + md5: a5c66c2b4b7fb464129a1163a49c9e53 + depends: + - cuda-version >=12.8,<12.9.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27215 + timestamp: 1738873838328 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + sha256: 78bfe492a98c2460960e2e9f7bef39326a889e2abb54debc9959ec7494822717 + md5: 04dbd57df8678150c7e5b37da647c702 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27415 + timestamp: 1738873896497 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + sha256: cc58a25d7ab38d8d27aa88b151dd55406cdfe5429b03419a13af8e9aca2f2596 + md5: cc1b22f4f3734a8b0e80aa874e9f1744 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.8.57 h3f2d84a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22706 + timestamp: 1739215390850 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + sha256: 5790a30774eab55f84afe42ec9e6d81298b31ae3cf2584e245958bc742cfd280 + md5: 3d8375d2e0d1957db66cfe319c76adeb + depends: + - cuda-cudart_linux-aarch64 12.8.57 h3ae8b8a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22831 + timestamp: 1739215503338 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + sha256: a60faad361f3f21a387d8c684114258de63305703db13c76417b5cf0956205a6 + md5: dff7d2f9a0ee9ab03bfff88fff9621da + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 192905 + timestamp: 1739215375478 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + sha256: 70caf7f62c2a645d9ef487fe2f41433145e11786e91fd87dfed6338babdefe04 + md5: aa86deee0e8c93f71fde92db26339407 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 207838 + timestamp: 1739215492480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + sha256: 424bea1fdfca90acf5c8c255e4b648315e8a07a8065a234dd4b28108d7514d59 + md5: 5ab6c95d69311e911bd98d48118ce047 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 232521 + timestamp: 1737670501800 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + sha256: 1b17aae0d05f839d7a5e08e40edbca2666954db95ed38b85d4c4aca9e1e568ca + md5: dcf96c9ad817538ebdcb1430f4510328 + depends: + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 235857 + timestamp: 1737670525095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + sha256: ff8fb3a51c18a43e8de90df30094e0ae4bb4ae0f35a473aa2f8ab052c5318816 + md5: 3a98112d0341979bbb2e75e71b36a4c0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1845047 + timestamp: 1737666283622 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + sha256: e0b0fe34fcb50c9c6e600bc5e29c7f65e5d09535eeeefae737819f71928c4813 + md5: 619e88e4871378089566f235461b4677 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1620833 + timestamp: 1737666390106 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + sha256: 2436f383674e29a788f17e8aa5fc9c86819e122725d2291eda63260f15100496 + md5: fb406ed72a4f4af7acfd591c6787b903 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-crt-tools 12.8.61 ha770c72_1 + - cuda-nvvm-tools 12.8.61 he02047a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 25714998 + timestamp: 1738873949175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + sha256: a82b060291312d286b06ccd04f61023c08afe66014fe356b1c594285e61b0b7b + md5: 8c753c56765e2c8babc05cb5e4848c51 + depends: + - cuda-crt-tools 12.8.61 h579c4fd_1 + - cuda-nvvm-tools 12.8.61 h614329b_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + - gcc_impl_linux-aarch64 >=6,<15.0a0 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22320853 + timestamp: 1738874044293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + sha256: 53377e888305b28e5c249b423291de37478ea465b2e4ba0247584491999a1284 + md5: 74f716637584db374166bf8b04f57a13 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5122708 + timestamp: 1737667356055 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + sha256: 292b078110ea97c19401a9fbdf359325d472a3b5c164c256846da82e6b3e3a9e + md5: 3829037f6474309e563bc86ea5344669 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5077857 + timestamp: 1737667422732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + sha256: a604b228e8aa84c3739c1b285857bf2c206a3d0ed7798216f5f651a0ac257ae3 + md5: f82afee87477746249975726453c56bf + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 24622383 + timestamp: 1738873904778 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + sha256: 9159c3b04c2eb7ed721e7a7ef6d7dec5b5bb58d5874d220299745034f10f5a28 + md5: 1f56d00ef41873791b9c6ab4642964b3 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 23961474 + timestamp: 1738873988055 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + sha256: 6f93ceb66267e69728d83cf98673221f6b1f95a3514b3a97777cfd0ef8e24f3f + md5: 794eaca58880616a508dd6f6eb389266 + constrains: + - cudatoolkit 12.8|12.8.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21086 + timestamp: 1737663758355 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe + depends: + - python >=3.9 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14382 + timestamp: 1737987072859 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 + depends: + - python >=3.9,<4.0.0 + - sniffio + constrains: + - aioquic >=1.0.0 + - wmi >=1.5.1 + - httpx >=0.26.0 + - trio >=0.23 + - cryptography >=43 + - httpcore >=1.0.0 + - idna >=3.7 + - h2 >=4.1.0 + license: ISC + license_family: OTHER + size: 172172 + timestamp: 1733256829961 +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.9 + license: Unlicense + size: 44401 + timestamp: 1733300827551 +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6552 + timestamp: 1733300828176 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e + depends: + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 + depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - email_validator >=2.0.0 + - fastapi-cli >=0.0.5 + - httpx >=0.23.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 + - uvicorn-standard >=0.12.0 + - python + license: MIT + license_family: MIT + size: 77940 + timestamp: 1738326226051 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 + depends: + - python >=3.9 + - rich-toolkit >=0.11.1 + - typer >=0.12.3 + - uvicorn-standard >=0.15.0 + license: MIT + license_family: MIT + size: 15546 + timestamp: 1734302408607 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + sha256: 223a157e2ce9e1195eced1bd42041b8219cc61c0a135f428256cf2753cac8142 + md5: 3fb0305a9a6f1d7607db045fdc42f705 + depends: + - python >=3.8 + - numpy >=1.17 + - tqdm >=4.27 + - pyyaml >=5.1 + - sentencepiece >=0.1.98,<=0.2.0 + - python + license: MIT + license_family: MIT + size: 74687 + timestamp: 1737040120169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + sha256: a5e341cbf797c65d2477b27d99091393edbaa5178c7d69b7463bb105b0488e69 + md5: 7cbfb3a8bb1b78a7f5518654ac6725ad + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 417323 + timestamp: 1718980707330 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + sha256: b92ffcb02ee027db2b3b8b1256ecf9e04afd4c1680467574889419c9ed42c089 + md5: 9defe233dc6909ac868a1ca50b2ca84d + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 201489 + timestamp: 1733462747377 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + sha256: efaca61923e45849a3d763280305cb3a00a769546ce5df2b1bbe24db40aa23af + md5: 3b8e056a42f71c9398857ecf0b8fbcb6 + depends: + - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 67755 + timestamp: 1740136133858 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 + depends: + - python >=3.9 + - typing_extensions + license: MIT + license_family: MIT + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + sha256: 21acb87a6403f88b2dbdefb79a537bc8fe871b86c60f9b690206eaf7ad1f009c + md5: 3639aa7b1297e680220f52c2b8a21200 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1339225 + timestamp: 1739803760467 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + sha256: 5554caf02aa37f3ef9b35d687f515385a50fd505987f5c4b84433d5c50d6a3b5 + md5: fbb03e07e1aefc42b856f0a06dd999f6 + depends: + - python + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1366847 + timestamp: 1739803796587 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + sha256: 15b1589c703c6a1677008e422175f540f3da35a9a63c588540a219042c697ea4 + md5: baa81a0f9e0470d67728651af77dc1c1 + depends: + - python + - __osx >=11.0 + - python 3.12.* *_cpython + - openssl >=3.4.1,<4.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1233816 + timestamp: 1739803893697 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101872 + timestamp: 1732707756745 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 101255 + timestamp: 1732707891645 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 85623 + timestamp: 1732707871414 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 28623 + timestamp: 1733223207185 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca + md5: 6837f3eff7dcea42ecd714ce1ac2b108 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11474 + timestamp: 1733223232820 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + build_number: 31 + sha256: 862289f2cfb84bb6001d0e3569e908b8c42d66b881bd5b03f730a3924628b978 + md5: bdf4a57254e8248222cb631db4393ff1 + depends: + - mkl >=2024.2.2,<2025.0a0 + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 17259 + timestamp: 1740087718283 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + build_number: 31 + sha256: 2ee3ab2b6eeb59f2d3c6f933fa0db28f1b56f0bc543ed2c0f6ec04060e4b6ec0 + md5: 2a06a6c16b45bd3d10002927ca204b67 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16724 + timestamp: 1740087727554 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + build_number: 31 + sha256: a2d20845d916ac8fba09376cd791136a9b4547afb2131bc315178adfc87bb4ca + md5: 10d012ddd7cc1c7ff9093d4974a34e53 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16760 + timestamp: 1740087736615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + sha256: efd9d6646cff6e93a81a9b671fa7af683f843ad72d1a46e258720d2a639f1034 + md5: cf83972da6924c67d8fbffa222896b95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42975121 + timestamp: 1738551437179 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + sha256: 7a06b4f6656f26e0b5ff124701973fa8602f5062f211d3975f40d5239d3eb4d9 + md5: a7649551ec41c69f5361a6c596ed1ffd + depends: + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42134035 + timestamp: 1738491036719 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + sha256: 70e24c9b98d24006ce3c2b27503cb2c122f78cc6f59e980db774020203835aca + md5: 0dfe6af4a27ec2372271e3703cc52e48 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_mkl_*_113 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 53568815 + timestamp: 1739239230425 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + sha256: 62f94d17e75cdf2f48f4a89175759449aaad05bf2a356836430c82c65a7c5f44 + md5: ad17071bfd97d24a7a83fd044ae6282c + depends: + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_generic_*_13 + - openblas * openmp_* + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 37722765 + timestamp: 1739239246382 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + sha256: 320cca1b7dbe0506221e0fb2911838fd112d4440a5298f033b56c1a93f0cf6fa + md5: e24814d808f0cd0e130dc141af1a8efd + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch 2.5.1 cpu_generic_*_13 + - pytorch-cpu ==2.5.1 + - openblas * openmp_* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 28302663 + timestamp: 1739247703257 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 418890 + timestamp: 1737016751326 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 + md5: 9915f85a72472011550550623cce2d53 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3190529 + timestamp: 1736986301022 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + size: 64430 + timestamp: 1733250550053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 25079 + timestamp: 1733220639175 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 3d909e8fd23a5e058ab59ad760423a0ecd55f51ac474a282cd00f698dd958c33 + md5: f511490d5e1d505c3df07f17c3b6d1e6 + depends: + - max-python ==25.2.0.dev2025022805 release + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 10380 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14465 + timestamp: 1733255681319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 + md5: 1459379c79dda834673426504d52b319 + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=19.1.2 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 124718448 + timestamp: 1730231808335 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + sha256: b5b674f496ed28c0b2d08533c6f11eaf1840bf7d9c830655f51514f2f9d9a9c8 + md5: d3758cd24507dc1bda3483ce051d48ac + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 132799 + timestamp: 1725629168783 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + sha256: abb35c37de2ec6c9ee89995142b1cfea9e6547202ba5578e5307834eca6d436f + md5: 65b21e8d5f0ec6a2f7e87630caed3318 + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 1841314 + timestamp: 1725746723157 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 336110 + timestamp: 1695459137796 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b + md5: 9a66894dfd07c4510beb6b3f9672ccc0 + constrains: + - mkl <0.a0 + license: BSD-3-Clause + license_family: BSD + size: 3843 + timestamp: 1582593857545 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + sha256: 6fd70c3d5b509ef1c30cb13df877f14b04bb0e53da032950921b31d95aa5971d + md5: bc4b4177052f661da6d56838dfe57a52 + depends: + - python >=3.9 + constrains: + - nvidia-ml ==9999999999 + - pynvml ~=12.0 + license: BSD-3-Clause + license_family: BSD + size: 43543 + timestamp: 1737778765664 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + sha256: 002c17241c698ba07b0d610da0590e8c8c1e38aef13cf7bd03112b2a9ff5350d + md5: eceb58298054d6f2b7c8f8c53642c2d8 + depends: + - __unix + - nvidia-ml-py >=11.450.51,<12.571.0a0 + - psutil >=5.6.6 + - python >=3.9 + license: GPL-3.0-only + license_family: GPL + size: 143819 + timestamp: 1737914833293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + sha256: ab5b873cc2542e305236e0439d323bf880d1b49eafe7a8a04d6863a5a409059d + md5: 65caf9f399f67c1c16efc0fb76f3576c + depends: + - deprecated >=1.2.6 + - importlib-metadata <=8.5.0,>=6.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 44649 + timestamp: 1738813183426 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + sha256: 12294c0e75460bf773500d0b97d58701f6141a26ebc7507b7aefd045c3943801 + md5: 49cf930ab95d2abaabb17f0d40899628 + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 19155 + timestamp: 1738757443981 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + sha256: 4bdb101663f63cd9b9c5560b40cc4441fd766885a13a130c9a0b60addc493f7d + md5: 19cd3caf8abaabe7210cb46dbde1932b + depends: + - deprecated >=1.2.6 + - googleapis-common-protos ~=1.52 + - opentelemetry-api ~=1.15 + - opentelemetry-exporter-otlp-proto-common 1.30.0 + - opentelemetry-proto 1.30.0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - python >=3.9 + - requests ~=2.7 + license: Apache-2.0 + license_family: APACHE + size: 17129 + timestamp: 1738881064907 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + sha256: 1b7420798c2e8589ea9c03a0b9e1db64a79dfbdf6d12937ad69fd70f9b2a6ec7 + md5: cbfa34f2b05a9f916b4e255416103082 + depends: + - python >=3.9 + - opentelemetry-api >=1.12,<2.dev0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - prometheus_client >=0.5.0,<1.0.0 + - python + license: Apache-2.0 + license_family: APACHE + size: 22659 + timestamp: 1740444975350 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + sha256: a7dfb1566daca6bd7aea78ccc69257324336fa945199081c9a9d378d1b59737b + md5: 6b2133dbe9127cd09d3c20061c8f4faa + depends: + - protobuf <6.0,>=5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 37366 + timestamp: 1738753488553 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + sha256: 287fac5c7a0a0a565932b7a43b733036bbc08e2b11cd93fb64f29ededb89e9c6 + md5: 3667728a1b18fb9a32aef23036934d9f + depends: + - opentelemetry-api 1.30.0 + - opentelemetry-semantic-conventions 0.51b0 + - python >=3.9 + - typing-extensions >=3.7.4 + - typing_extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 77853 + timestamp: 1738855492720 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + sha256: 2618877c066a6608ea57a05d260ddd805d0f59b95076f63d816df139f648f25a + md5: ff41e8547f2e7e0d0affc6c6e6e0e87f + depends: + - deprecated >=1.2.6 + - opentelemetry-api 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 91903 + timestamp: 1738850427906 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 41362848 + timestamp: 1735932311857 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 + md5: e9dcbce5f45f9ee500e728ae58b605b6 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 23595 + timestamp: 1733222855563 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + sha256: 28262575a4b0421a50983be5e898205b7315b50d3e72518fe44b2b9c368026d8 + md5: e86915350744e5a8de993f7474ca98ce + depends: + - python >=3.9 + - prometheus_client >=0.8.0 + - typing_extensions >=3.10.0 + - wrapt + - python + license: Apache-2.0 + license_family: APACHE + size: 24093 + timestamp: 1737857634308 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 49002 + timestamp: 1733327434163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 464794 + timestamp: 1731366525051 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 473242 + timestamp: 1731366577844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 448803 + timestamp: 1731367010746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 466219 + timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + sha256: 2a4f1ad69b16b9843f90adf5b39418c635835605bd2b300f55a8432c5ee22296 + md5: 1195731cd361196f9e352341a764fccb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 467245 + timestamp: 1740663309651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + sha256: cb11dcb39b2035ef42c3df89b5a288744b5dcb5a98fb47385760843b1d4df046 + md5: 0f461bd37cb428dc20213a08766bb25d + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 476376 + timestamp: 1740663381256 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + sha256: 27f888492af3d5ab19553f263b0015bf3766a334668b5b3a79c7dc0416e603c1 + md5: 8088a5e7b2888c780738c3130f2a969d + depends: + - pybind11-global 2.13.6 *_2 + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 186375 + timestamp: 1730237816231 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + sha256: 9ff0d61d86878f81779bdb7e47656a75feaab539893462cff29b8ec353026d81 + md5: 120541563e520d12d8e39abd7de9092c + depends: + - __unix + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 179139 + timestamp: 1730237481227 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.2 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + size: 296841 + timestamp: 1737761472006 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1641402 + timestamp: 1734571789895 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1505076 + timestamp: 1734571966615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1593461 + timestamp: 1734571986644 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + sha256: 84b78dcdc75d7dacd8c85df9a7fef42ff5684897217b46beef6c516afb2550dc + md5: 88715188749bfac9fa92aec9c747d62c + depends: + - pydantic >=2.7.0 + - python >=3.9 + - python-dotenv >=0.21.0 + license: MIT + size: 32632 + timestamp: 1740672054181 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 888600 + timestamp: 1736243563082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 182524 + timestamp: 1737774624030 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + sha256: 75245ca9d0cbd6d38bb45ec02430189a9d4c21c055c5259739d738a2298d61b3 + md5: 799ed216dc6af62520f32aa39bc1c2bb + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 259195 + timestamp: 1733217599806 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 24215 + timestamp: 1733243277223 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 27913 + timestamp: 1734420869885 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + sha256: dca9058fc3fd8c7720815a60f91fbed21c96deed1862c0779cb9849010a615e0 + md5: 0d0917b3ad4dad39ee9cf2340b6913e7 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - networkx + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 27046950 + timestamp: 1739243439897 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + sha256: aca9f90080b41be87632b9be5c05d2d2583583cc8a88c2e4d9a755b4352443e8 + md5: 973311c703c92c0145a0ed6cd28ac1f0 + depends: + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-cpu ==2.5.1 + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26955065 + timestamp: 1739239589334 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + sha256: 80ad77e98a4d91287b4c5aad62fb73c19fdcd3bf8a4c46f3630fdb3795b613ac + md5: 8a4ecdb698c36fa439757454437f44bd + depends: + - __osx >=11.0 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26176295 + timestamp: 1739248670305 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.9 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185646 + timestamp: 1733342347277 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 + md5: 4ba15ae9388b67d09782798347481f69 + depends: + - python >=3.9 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 17357 + timestamp: 1733750834072 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + sha256: 87f7d70b0a29627ce7f78a463c6609156aaee638cca917b5f6c6c70828446acf + md5: 82e861633beabad680253e03918ec4a2 + depends: + - python >=3.9 + - python + constrains: + - varname >=0.1 + license: MIT + license_family: MIT + size: 13828 + timestamp: 1740445106343 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14462 + timestamp: 1733301007770 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + sha256: c998d5a29848ce9ff1c53ba506e7d01bbd520c39bbe72e2fb7cdf5a53bad012f + md5: aec4dba5d4c2924730088753f6fa164b + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSL-1.0 + size: 1920152 + timestamp: 1738089391074 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + sha256: 86a19e4457bbc20d6c52a7cf0a010b2d99b704e78ae396f9fae4f4da9ae42cf3 + md5: 76647a886ead58ea5d82990117aafce2 + depends: + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSL-1.0 + size: 1172391 + timestamp: 1738090891356 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + sha256: e8f26540b22fe2f1c9f44666a8fdf0786e7a40e8e69466d2567a53b106f6dff3 + md5: 6567410b336a7b8f775cd9157fb50d61 + depends: + - __osx >=11.0 + - libcxx >=18 + - llvm-openmp >=18.1.8 + arch: arm64 + platform: osx + license: BSL-1.0 + size: 584685 + timestamp: 1738089615902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 15019 + timestamp: 1733244175724 +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 + depends: + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 + license: BSD-3-Clause + license_family: BSD + size: 15324 + timestamp: 1735126414893 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 + depends: + - anyio >=3.6.2,<5 + - python >=3.9 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 57934 + timestamp: 1737824077668 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + sha256: aba3affdd0f87e198185ddc0986aa59cb067832dc88ffa6dedbe127da4f8d7bf + md5: 0f116f56298be1450a9db6b45bd2d9a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 968542 + timestamp: 1739550580537 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + sha256: 924de648f79b934172cbeafed35ef7413fbd9944c9a76291bbf835da1cfaa0af + md5: 2c8304aecaaced4bbcfc715a5ed16a1a + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 916956 + timestamp: 1739553289605 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + sha256: a4335c374e3af6c8ce3d0c413b7074c355e04059dca25853ef0961f4ae0ab39b + md5: ca9fecb880b6d35241324835804a98a0 + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 827008 + timestamp: 1739550849700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1931389 + timestamp: 1732734727624 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 19167 + timestamp: 1733256819729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + sha256: de5ede47f60573582a3aa6dc840c91a6c2002f294df22032ca91575174d60a21 + md5: 9c6facebce2e8fd1f9559ad14dc9dced + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101169812 + timestamp: 1738676149595 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + sha256: abd91d81df1ef4b70546da24bc3b01b1aa7a5228bb7d4b73b38abab9dac74bfe + md5: f0c67131cc86daae8adf3ac221ee3a48 + depends: + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 103306412 + timestamp: 1738676445445 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + sha256: fa6eeb42e3bddff74126dd61b01b21a3f4f4791368e93bc5a5775563542b2d4e + md5: 1152565b06e3dc27794c3c11f1050005 + depends: + - typer-slim-standard ==0.15.2 h801b22e_0 + - python >=3.9 + - python + license: MIT + size: 76158 + timestamp: 1740697495168 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + sha256: c094713560bfacab0539c863010a5223171d9980cbd419cc799e474ae15aca08 + md5: 7c8d9609e2cfe08dd7672e10fe7e7de9 + depends: + - python >=3.9 + - click >=8.0.0 + - typing_extensions >=3.7.4.3 + - python + constrains: + - typer 0.15.2.* + - rich >=10.11.0 + - shellingham >=1.3.0 + license: MIT + size: 45866 + timestamp: 1740697495167 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + sha256: 79b6b34e90e50e041908939d53053f69285714b0082a0370fba6ab3b38315c8d + md5: ea164fc4e03f61f7ff3c1166001969af + depends: + - typer-slim ==0.15.2 pyh29332c3_0 + - rich + - shellingham + license: MIT + size: 5409 + timestamp: 1740697495168 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.9 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 48643 + timestamp: 1734293057914 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 + depends: + - __unix + - httptools >=0.6.3 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.34.0 pyh31011fe_0 + - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - watchfiles >=0.13 + - websockets >=10.4 + license: BSD-3-Clause + license_family: BSD + size: 7203 + timestamp: 1734293058849 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 + md5: 998e481e17c1b6a74572e73b06f2df08 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT OR Apache-2.0 + size: 701355 + timestamp: 1730214506716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 + md5: d83e107ba16c77aba2feec47b7b666a4 + depends: + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT OR Apache-2.0 + size: 655266 + timestamp: 1730214606664 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 + depends: + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + sha256: 409a7a1d32e8ea23ee5233b2e95152cfaec8763aa9031f28cd8014594afc45df + md5: 5da55154de4cc82383f6bd52195db1c4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 263350 + timestamp: 1739780619751 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + sha256: 7fe6b6150410f57b442e6d130fc433959c436ada975b2f9e6352b902381ece99 + md5: 998b97a00d49748c249b749edbf27107 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 264378 + timestamp: 1739780675487 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + sha256: 70f511b2f9f3e0e05f2d403200a55470f9dabf87d8830b42d9ff697b9677c946 + md5: ae0c72f9ce03b54723f1cf7a4066d083 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 264745 + timestamp: 1739780725559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 61198 + timestamp: 1736869673767 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + sha256: ff584830ae7a0e3fb7929f1a7554ca3559c83d5e064aed717719647bcaf2189f + md5: 2e78c5fd9d1e586b0c635e02dbbaa761 + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4409669 + timestamp: 1740619132269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + sha256: c283b9f9a73d77cfa806d276010dca62335428d11be170d61fc869b26a038b5a + md5: 1970aa1298826d9e2feb51d16368f5aa + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4270904 + timestamp: 1740619375982 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + sha256: a6801464fd31ddc4e87ae4b210db9cea1bd39e5b3f0d7cc48d9673d53685667b + md5: 41f1c12abe32475b267fcb349fa5f7ab + depends: + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - __osx >=11.0 + - libcxx >=18 + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 AND BSD-4-Clause + size: 353403 + timestamp: 1740619156354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/examples/offline-inference/pixi.toml b/examples/offline-inference/pixi.toml new file mode 100644 index 0000000000..3115b4596d --- /dev/null +++ b/examples/offline-inference/pixi.toml @@ -0,0 +1,14 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Examples exercising the max stack offline and in python" +name = "Python Offline Inference Examples" +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +version = "0.1.0" + +[tasks] +basic = "python basic.py" + +[dependencies] +python = ">=3.9,<3.13" +max-pipelines = "*" diff --git a/examples/operators/magic.lock b/examples/operators/magic.lock index 2e46e07f29..5a090396b9 100644 --- a/examples/operators/magic.lock +++ b/examples/operators/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,16 +37,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -89,11 +89,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -102,16 +102,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -421,6 +421,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -431,6 +432,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -495,6 +497,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -513,6 +516,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -531,6 +535,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -546,6 +551,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -561,6 +567,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -576,6 +583,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -701,83 +709,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -789,10 +797,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -800,11 +809,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -813,8 +822,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -828,26 +837,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -861,6 +870,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -876,6 +886,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -891,6 +902,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1149,50 +1161,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1288,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1344,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1365,16 +1378,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1389,7 +1402,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1410,16 +1423,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1434,7 +1447,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1455,14 +1468,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1474,19 +1487,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1823,41 +1836,41 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a md5: 480e915dfc6c592615ef6f217e615aa6 diff --git a/examples/testing/magic.lock b/examples/testing/magic.lock index 2e46e07f29..5a090396b9 100644 --- a/examples/testing/magic.lock +++ b/examples/testing/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,16 +37,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -58,7 +58,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -89,11 +89,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -102,16 +102,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -123,7 +123,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -163,11 +163,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -179,7 +179,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -421,6 +421,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -431,6 +432,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -495,6 +497,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -513,6 +516,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -531,6 +535,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -546,6 +551,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -561,6 +567,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -576,6 +583,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -701,83 +709,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -789,10 +797,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -800,11 +809,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -813,8 +822,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -828,26 +837,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -861,6 +870,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -876,6 +886,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -891,6 +902,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1149,50 +1161,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1288,48 +1301,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022713-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: d2b6c247e736b34c8a6cf0452846a2162b9aa6a3c3fd5d029f2b2e0a7be571d3 + md5: 4db470c401468b43b673548c91a5e94e depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release + - max-python ==25.2.0.dev2025022713 release + - mojo-jupyter ==25.2.0.dev2025022713 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9908 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022713-release.conda + sha256: 3c0bf4c8f2a6b5400bcbd64032d2c59b9dfcc5ad50432a8a9e1e3d024d3400f5 + md5: 9751487ef2e786e9dcaff28f0628ba03 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 249813859 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022713-release.conda + sha256: bea03a1b06c8554504542794822a345735e7847a914af4e9766cb275ab5b3238 + md5: 04b52dac259a6268bc51a78da0aa9f1d depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 252115018 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022713-release.conda + sha256: eb28bb19ea43f9a63b8f8ca88751c932263ab2134fd651b5e82cd729101b18cb + md5: 9f3a63249667b9e29ba93d7c21e1d679 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022713 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 217216039 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: b555a98a5162485a66cb852674d19b8c65e139ff70ec92451f2130dea741263a + md5: cdaed74f4e9fefcc0bc928598740815c depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1344,7 +1357,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1365,16 +1378,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 123534013 + timestamp: 1740664231187 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: 71aeaf13405bb7ba613f5336c5e03fbbd158adbfc1a5ddab1bf0b7f248535f15 + md5: 903350b3c6380505cb1cc59556cdcf68 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1389,7 +1402,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1410,16 +1423,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 125927777 + timestamp: 1740664199928 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022713-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: 829c387dda5a2a52baca2299c67ba511f2039beeec4c2f6e3b16990077cbd0b9 + md5: 4f10a16f087934ec4fd2e87b8326c4d5 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1434,7 +1447,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus <1.0.0 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1455,14 +1468,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 112550091 + timestamp: 1740665267852 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022713-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: baac376bd7df6e8c4776fc934dd3c7d2566a31908e514ea02180ba638430b379 + md5: 5906489ff8ca5341b676d9001a246ace depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1474,19 +1487,19 @@ packages: - python license: MIT size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + timestamp: 1740664199927 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022713-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: ff78ef2596148c1ae0819f53e4ae3266e0003a836bdacba9efee6d4335eef386 + md5: 95972dc5cb3b79fcb9c4d47591cd4c7e depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022713 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22991 + timestamp: 1740664199928 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1823,41 +1836,41 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a md5: 480e915dfc6c592615ef6f217e615aa6 diff --git a/mojo/.github/CODEOWNERS b/mojo/.github/CODEOWNERS new file mode 100644 index 0000000000..f091037d6b --- /dev/null +++ b/mojo/.github/CODEOWNERS @@ -0,0 +1,14 @@ +# Code owners for the Mojo repository + +# Standard Library Sources +/stdlib/ @modular/stdlib + +# Documentation +/docs/ @modular/mojo-docs + +/docs/changelog.md @modular/stdlib + +/stdlib/docs/ @modular/mojo-docs @modular/stdlib + +# Examples +/examples/ @jackos diff --git a/mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml b/mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml new file mode 100644 index 0000000000..daf162cefc --- /dev/null +++ b/mojo/.github/ISSUE_TEMPLATE/doc_issue.yaml @@ -0,0 +1,50 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Documentation issue +description: Report a problem with the Mojo docs +title: "[Docs]" +labels: + - documentation +body: + - type: markdown + attributes: + value: | + Thank you for helping us improve the Mojo docs! + + Please add a title above and fill in the following fields so we can understand the problem. + + - type: input + attributes: + label: Where is the problem? + description: Provide a link to the problematic page (with a heading anchor). + validations: + required: true + + - type: textarea + attributes: + label: What can we do better? + description: Describe the documentation problem and how you suggest we fix it. + validations: + required: true + + - type: textarea + attributes: + label: Anything else? + validations: + required: false + + - type: markdown + attributes: + value: | + Thank you! diff --git a/mojo/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml b/mojo/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml new file mode 100644 index 0000000000..57b19d978c --- /dev/null +++ b/mojo/.github/ISSUE_TEMPLATE/mojo_bug_report.yaml @@ -0,0 +1,61 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Mojo bug report +description: Create a bug report to help us improve Mojo +title: "[BUG]" +labels: + - "bug,mojo" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to fill out a bug report! + + Please provide a descriptive title above and fill in the following fields. + + - type: textarea + id: Description + attributes: + label: Bug description + description: Describe the bug you encountered and what you expected to happen. + value: | + ### Actual behavior + + + ### Expected behavior + + validations: + required: true + + - type: textarea + id: Steps + attributes: + label: Steps to reproduce + description: Provide the specific steps to reproduce the issue. + value: | + - Provide a relevant code snippet or a link to the code that did not work as expected. + - If applicable, add screenshots to help explain the problem. + - If using the Playground, name the pre-existing notebook that failed and the steps that led to failure. + - Include anything else that might help us debug the issue. + validations: + required: true + + - type: textarea + id: Context + attributes: + label: System information + description: What version of Mojo are you using? + value: | + - Provide the system information by running `magic info`. + - Provide version information for MAX (includes Mojo) by pasting the output of `magic list max`. diff --git a/mojo/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml b/mojo/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml new file mode 100644 index 0000000000..a5ddc32a58 --- /dev/null +++ b/mojo/.github/ISSUE_TEMPLATE/mojo_feature_request.yaml @@ -0,0 +1,63 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +name: Mojo feature request +description: Suggest an enhancement for Mojo +title: "[Feature Request]" +labels: + - "enhancement,mojo" +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to suggest a Mojo enhancement! + + Please enter a concise title above and fill out the following fields. + + - type: checkboxes + id: Roadmap + attributes: + label: Review Mojo's priorities + description: Please take a look at our roadmap before you file a new feature request. + options: + - label: I have read the [roadmap and priorities](https://docs.modular.com/mojo/roadmap.html#overall-priorities) and I believe this request falls within the priorities. + required: true + + - type: markdown + attributes: + value: | + If the request is out of the published roadmap and priorities, please start a [discussion](https://forum.modular.com/) in the Modular Forum to get feedback from the team. + + - type: textarea + id: Request + attributes: + label: What is your request? + description: Describe how you'd like us to improve Mojo. + validations: + required: true + + - type: textarea + id: Motivation + attributes: + label: What is your motivation for this change? + description: Describe the problem that your feature seeks to address (what is the value to the product/user?). + validations: + required: true + + - type: textarea + id: Description + attributes: + label: Any other details? + description: Perhaps some minimum functional attributes the implementation should include, or other context about your feature. + validations: + required: false diff --git a/mojo/.github/PULL_REQUEST_TEMPLATE.md b/mojo/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000000..2cd5f0bf30 --- /dev/null +++ b/mojo/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,10 @@ + diff --git a/mojo/.github/workflows/check_pr_target.yml b/mojo/.github/workflows/check_pr_target.yml new file mode 100644 index 0000000000..4e333baf2a --- /dev/null +++ b/mojo/.github/workflows/check_pr_target.yml @@ -0,0 +1,28 @@ +name: Check PR target branch + +on: + pull_request: + types: [opened, edited, synchronize, reopened, ready_for_review] + +permissions: + contents: read + pull-requests: read + +jobs: + check-pr-target: + name: Check PR target branch + + runs-on: ubuntu-latest + timeout-minutes: 10 + + defaults: + run: + shell: bash + + steps: + - name: Fail if not targeting main branch + if: ${{ github.base_ref != 'main' }} + run: | + echo "PRs must be targeted to merge to the main branch!" + echo "PR is currently targeting: \"${{ github.base_ref }}\"" + exit 1 diff --git a/mojo/.github/workflows/check_pr_title.yml b/mojo/.github/workflows/check_pr_title.yml new file mode 100644 index 0000000000..9b2f320a15 --- /dev/null +++ b/mojo/.github/workflows/check_pr_title.yml @@ -0,0 +1,53 @@ +name: Check PR title + +on: + pull_request: + # By default, a workflow only runs when a pull_request's activity type is opened, synchronize, or reopened. We + # explicitly override here so that PR titles are re-linted when the PR text content is edited. + # + # Possible values: https://help.github.com/en/actions/reference/events-that-trigger-workflows#pull-request-event-pull_request + types: [opened, edited, reopened, synchronize, ready_for_review] + +jobs: + check-pr-title: + name: Check PR title format + + permissions: + pull-requests: write + + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - uses: morrisoncole/pr-lint-action@51f3cfabaf5d46f94e54524214e45685f0401b2a + if: github.actor != 'dependabot[bot]' + with: + title-regex: "^(Revert \")?(\\[\\S.*\\]\\s?)+\\s+[a-zA-Z`].*" + repo-token: "${{ secrets.GITHUB_TOKEN }}" + on-failed-regex-fail-action: true + on-failed-regex-create-review: true + on-failed-regex-request-changes: true + on-failed-regex-comment: + "The PR title does not conform to the '[\\] Title' format. + Please update the PR title. + \n\n + Typical [\\] values include: + \n\n + * `[stdlib]` — indicates a change to the Mojo standard library code\n + * `[docs]` — indicates a change to the documentation + \n\n + It's okay to include multiple labels on a PR that + affect multiple areas of work. + \n\n + Thank you for contributing to Mojo!🔥 + \n\n + + You can also use a tool like www.regex101.com to see why your PR + title fails to conform. Use + ``` + %regex% + ``` + as the regex to test and ```${{ github.event.pull_request.title }}``` + as the test string." + on-succeeded-regex-dismiss-review-comment: + "All good now, thanks!🫸🫷" diff --git a/mojo/.github/workflows/standard_library_tests_and_examples.yml b/mojo/.github/workflows/standard_library_tests_and_examples.yml new file mode 100644 index 0000000000..14a4f3dc45 --- /dev/null +++ b/mojo/.github/workflows/standard_library_tests_and_examples.yml @@ -0,0 +1,68 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +name: Test stdlib and examples +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + +jobs: + test-examples: + name: with ${{ matrix.os }} and assertions=${{ matrix.mojo-enable-assertions }} + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest", "macos-14"] + mojo-enable-assertions: [0, 1] + + runs-on: ${{ matrix.os }} + timeout-minutes: 30 + + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Download Magic CLI + run: | + curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash + # Add magic to PATH + echo "$HOME/.modular/bin" >> $GITHUB_PATH + + - name: Install build tools (Linux) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: | + ./stdlib/scripts/install-build-tools-linux.sh + + - name: Install build tools (macOS) + if: ${{ matrix.os == 'macos-14' }} + run: | + ./stdlib/scripts/install-build-tools-macos.sh + + - name: Run standard library tests and examples + env: + MOJO_ENABLE_ASSERTIONS_IN_TESTS: ${{ matrix.mojo-enable-assertions }} + working-directory: mojo + run: | + magic run --frozen tests + magic run --frozen examples diff --git a/mojo/.github/workflows/test_pre_commit.yml b/mojo/.github/workflows/test_pre_commit.yml new file mode 100644 index 0000000000..99a2ddf73d --- /dev/null +++ b/mojo/.github/workflows/test_pre_commit.yml @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2024, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +name: Run pre-commit +on: + pull_request: + types: [opened, synchronize, reopened, ready_for_review] + workflow_dispatch: + +permissions: + contents: read + pull-requests: read + +jobs: + lint: + runs-on: "ubuntu-latest" + timeout-minutes: 30 + + defaults: + run: + shell: bash + env: + DEBIAN_FRONTEND: noninteractive + + steps: + - name: Checkout repo + uses: actions/checkout@v4 + + - name: Download Magic CLI + run: | + curl -ssL https://magic.modular.com/cfba4c92-2390-4b86-93de-04b2f47114d5 | bash + # Add magic to PATH + echo "$HOME/.modular/bin" >> $GITHUB_PATH + + - name: Install pre-commit + run: | + pip install pre-commit + pre-commit install + + - name: Run pre-commit + run: magic run pre-commit run --all-files + diff --git a/mojo/CODE_OF_CONDUCT.md b/mojo/CODE_OF_CONDUCT.md new file mode 100644 index 0000000000..f4f5ad5a25 --- /dev/null +++ b/mojo/CODE_OF_CONDUCT.md @@ -0,0 +1,71 @@ +# Code of conduct + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to make participation in our project and +our community a harassment-free experience for everyone, regardless of age, +body size, disability, ethnicity, gender identity and expression, level of +experience, nationality, personal appearance, race, religion, or sexual +identity and orientation. + +## Our standards + +All community forums and spaces are meant for professional interactions that +are friendly, inclusive, helpful, and collaborative. Examples of behavior that +contributes to creating a positive environment include: + +- Using welcoming and inclusive language. +- Being respectful of differing viewpoints and experiences. +- Gracefully accepting constructive criticism. +- Focusing on what is best for the community. +- Showing empathy towards other community members. + +Any behavior that could reasonably be considered inappropriate in a +professional setting is unacceptable. Examples of unacceptable behavior by +participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or + advances. +- Trolling, insulting/derogatory comments, and personal or political attacks. +- Public or private harassment. +- Publishing others' private information, such as a physical or electronic + address, without explicit permission. +- Conduct which could reasonably be considered inappropriate for the forum in + which it occurs. + +## Our responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies to all project content and public spaces on the +Mojo GitHub repo, the rest of Modular’s GitHub organization, and all other +official Mojo community spaces and communication mediums, whether offline or +online. + +## Enforcement + +Instances of abusive, harassment, or otherwise unacceptable behavior should be +reported to the project team at . All complaints will +be reviewed and investigated and will result in a response that is deemed +necessary and appropriate to the circumstances. The project team is obligated +to maintain confidentiality with regard to the reporter of an incident. Further +details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant, version 1.4, +available at , and includes some +aspects of the Geek Feminism Code of Conduct and the Drupal Code of Conduct. diff --git a/CONTRIBUTING.md b/mojo/CONTRIBUTING.md similarity index 98% rename from CONTRIBUTING.md rename to mojo/CONTRIBUTING.md index 4c39f7729a..14e6ee1a9a 100644 --- a/CONTRIBUTING.md +++ b/mojo/CONTRIBUTING.md @@ -210,7 +210,7 @@ which represents the most recent nightly build. Before you start your first pull request, please complete this checklist: - Read this entire contributor guide. -- Read the [Code of Conduct](./CODE_OF_CONDUCT.md). +- Read the [Code of Conduct](../CODE_OF_CONDUCT.md). #### Evaluate and get buy-in on the change @@ -222,7 +222,7 @@ for more details. #### Fork and clone the repo -Go to the [Mojo repo](https://github.com/modular/mojo) and click the fork +Go to the [MAX repo](https://github.com/modular/max) and click the fork button: ![Create Fork](stdlib/docs/images/create-fork.png) @@ -230,14 +230,14 @@ button: Clone your forked repo locally with the command: ```bash -git clone git@github.com:[your-username]/mojo.git -cd mojo +git clone git@github.com:[your-username]/max.git +cd max/mojo ``` Add the upstream remote and fetch it: ```bash -git remote add upstream git@github.com:modular/mojo.git +git remote add upstream git@github.com:modular/max.git git fetch upstream ``` @@ -311,10 +311,10 @@ You'll see a link to create a PR: ```plaintext remote: Create a pull request for 'my-fix-pr' on GitHub by visiting: -remote: https://github.com/[your-username]/mojo/pull/new/my-fix-pr +remote: https://github.com/[your-username]/max/pull/new/my-fix-pr ``` -It should automatically set the base branch to the upstream `modular/mojo/main`, +It should automatically set the base branch to the upstream `modular/max/main`, but if it doesn't, you can set it manually. Now fill out the details: diff --git a/mojo/LICENSE b/mojo/LICENSE new file mode 100644 index 0000000000..c1af4075d5 --- /dev/null +++ b/mojo/LICENSE @@ -0,0 +1,235 @@ +============================================================================================== +The Mojo repository is licensed under the Apache License v2.0 with LLVM Exceptions: +============================================================================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +---- LLVM Exceptions to the Apache 2.0 License ---- + +As an exception, if, as a result of your compiling your source code, portions +of this Software are embedded into an Object form of such source code, you +may redistribute such embedded portions in such Object form without complying +with the conditions of Sections 4(a), 4(b) and 4(d) of the License. + +In addition, if you combine or link compiled forms of this Software with +software that is licensed under the GPLv2 ("Combined Software") and if a +court of competent jurisdiction determines that the patent provision (Section +3), the indemnity provision (Section 9) or other Section of the License +conflicts with the conditions of the GPLv2, you may retroactively and +prospectively choose to deem waived or otherwise exclude such Section(s) of +the License, but only in their entirety and only with respect to the Combined +Software. + +============================================================================== +Software from third parties included in the LLVM Project: +============================================================================== + +The LLVM Project contains third party software which is under different license +terms. All such code will be identified clearly using at least one of two +mechanisms: + +1) It will be in a separate directory tree with its own `LICENSE.txt` or + `LICENSE` file at the top containing the specific license and restrictions + which apply to that software, or +2) It will contain specific license and restriction terms at the top of every + file. diff --git a/mojo/README.md b/mojo/README.md new file mode 100644 index 0000000000..8e4682b38b --- /dev/null +++ b/mojo/README.md @@ -0,0 +1,113 @@ +
+ + + [Website][Mojo] | [Getting Started] | [API Documentation] | [Contributing] | [Changelog] +
+ +[Mojo]: https://www.modular.com/mojo/ +[Getting Started]: https://docs.modular.com/mojo/manual/get-started/ +[API Documentation]: https://docs.modular.com/mojo/lib +[Contributing]: ./CONTRIBUTING.md +[Changelog]: ./docs/changelog.md + +# Welcome to Mojo 🔥 + +Mojo is a new programming language that bridges the gap between research +and production by combining Python syntax and ecosystem with systems +programming and metaprogramming features. Mojo is still young, but it is +designed to write blazing-fast code for CPUs, GPUs, and more as part of +the [MAX Platform](https://www.modular.com/max). + +This repo includes source code for: + +- Mojo examples +- Mojo documentation hosted at [modular.com](https://docs.modular.com/mojo/) +- The [Mojo standard library](https://docs.modular.com/mojo/lib) + +This repo has two primary branches: + +- The [`stable`](https://github.com/modular/max/tree/stable) branch, which +is in sync with the last stable released version of Mojo. Use the examples +here if you’re using a [release build of Mojo](#latest-released). + +- The [`main`](https://github.com/modular/max/tree/main) branch, which +is in sync with the Mojo nightly build and subject to breakage. Use this branch +for [contributions](./CONTRIBUTING.md), or if you're using the latest +[nightly build of Mojo](#latest-nightly). + +To learn more about Mojo, see the +[Mojo Manual](https://docs.modular.com/mojo/manual/). + +## Installing Mojo + +### Latest Released + +To install the last released build of Mojo, follow the guide to +[Get started with Mojo](https://docs.modular.com/mojo/manual/get-started). + +### Latest Nightly + +The nightly Mojo builds are subject to breakage and provide an inside +view of how the development of Mojo is progressing. Use at your own risk +and be patient! + +To get nightly builds, see the same instructions to [Get started with +Mojo](https://docs.modular.com/mojo/manual/get-started), but when you create +your project, instead use the following `magic init` command to set the +conda package channel to `max-nightly`: + +```bash +magic init hello-world-nightly --format mojoproject \ + -c conda-forge -c https://conda.modular.com/max-nightly +``` + +Or, if you're [using conda](https://docs.modular.com/magic/conda), add the +`https://conda.modular.com/max-nightly/` channel to your `environment.yaml` +file. For example: + +```yaml +[project] +name = "Mojo nightly example" +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] + +[dependencies] +max = "*" +``` + +When you clone this repo, you'll be on the `main` branch by default, +which includes code matching the latest nightly build: + +```bash +git clone https://github.com/modular/max.git +``` + +If you want to instead see the source from the most recent stable +release, then you can switch to the `stable` branch. + +## Contributing + +When you want to report issues or request features, [please create a GitHub +issue here](https://github.com/modular/max/issues). +See [here](./CONTRIBUTING.md) for guidelines on filing good bugs. + +We welcome contributions to this repo for mojo on the +[`main`](https://github.com/modular/max/tree/main) +branch. If you’d like to contribute to Mojo, please first read our [Contributor +Guide](https://github.com/modular/max/blob/main/mojo/CONTRIBUTING.md). + +For more general questions or to chat with other Mojo developers, check out our +[Discord](https://discord.gg/modular). + +## License + +This repository and its contributions are licensed under the Apache License v2.0 +with LLVM Exceptions (see the LLVM [License](https://llvm.org/LICENSE.txt)). +MAX and Mojo usage and distribution are licensed under the +[MAX & Mojo Community License](https://www.modular.com/legal/max-mojo-license). + +## Thanks to our contributors + + + + diff --git a/docs/README.md b/mojo/docs/README.md similarity index 91% rename from docs/README.md rename to mojo/docs/README.md index 5200bc5cfe..d5abf29c53 100644 --- a/docs/README.md +++ b/mojo/docs/README.md @@ -16,7 +16,7 @@ Be aware that we don't provide tools to generate a preview of the website, because the Mojo docs are built along with other content that's not included in this repo. As such, we recommend you preview your edits in an IDE that can render Markdown and MDX files, such as VS Code, including the -[VS Code environment in GitHub](https://github.dev/modular/mojo/blob/main/). +[VS Code environment in GitHub](https://github.dev/modular/max/blob/main/). For more information about how to contribute, see the [Contributor Guide](../CONTRIBUTING.md) diff --git a/docs/changelog-released.md b/mojo/docs/changelog-released.md similarity index 92% rename from docs/changelog-released.md rename to mojo/docs/changelog-released.md index 13cca39ddf..82fa4aa7a8 100644 --- a/docs/changelog-released.md +++ b/mojo/docs/changelog-released.md @@ -572,25 +572,25 @@ in [Update a package](/magic#update-a-package) to update the `max` package. - The command `mojo debug --vscode` now sets the current working directory properly. -- [Issue #3796](https://github.com/modular/mojo/issues/3796) - Compiler crash +- [Issue #3796](https://github.com/modular/max/issues/3796) - Compiler crash handling `for`-`else` statement. -- [Issue #3540](https://github.com/modular/mojo/issues/3540) - Using named +- [Issue #3540](https://github.com/modular/max/issues/3540) - Using named output slot breaks trait conformance -- [Issue #3617](https://github.com/modular/mojo/issues/3617) - Can't generate +- [Issue #3617](https://github.com/modular/max/issues/3617) - Can't generate the constructors for a type wrapping `!lit.ref` - The Mojo Language Server doesn't crash anymore on empty `__init__.mojo` files. - [Issue #3826](https://github.com/modular/mojo/issues/3826). + [Issue #3826](https://github.com/modular/max/issues/3826). -- [Issue #3935](https://github.com/modular/mojo/issues/3935) - Confusing OOM +- [Issue #3935](https://github.com/modular/max/issues/3935) - Confusing OOM error when using `Tuple.get()` incorrectly. -- [Issue #3955](https://github.com/modular/mojo/issues/3955) - Unexpected +- [Issue #3955](https://github.com/modular/max/issues/3955) - Unexpected copy behavior with `def` arguments in loops -- [Issue #3960](https://github.com/modular/mojo/issues/3960) - Infinite `for` +- [Issue #3960](https://github.com/modular/max/issues/3960) - Infinite `for` loop ## v24.6 (2024-12-17) @@ -617,7 +617,7 @@ detailed information in the following sections: (`ref [a, b]`). For details, see [Language changes](#24-6-language-changes). For background information and rationale on the name change see - [the proposal](https://github.com/modular/mojo/issues/3623). For more + [the proposal](https://github.com/modular/max/issues/3623). For more information on origins, see [Lifetimes, origins and references](/mojo/manual/values/lifetimes) in the Mojo Manual. @@ -699,7 +699,7 @@ detailed information in the following sections: eventually be deprecated and removed. This was [discussed extensively in a public - proposal](https://github.com/modular/mojo/issues/3623). For more + proposal](https://github.com/modular/max/issues/3623). For more information, see [Named results](/nightly/mojo/manual/functions#named-results) in the Mojo Manual. @@ -922,7 +922,7 @@ detailed information in the following sections: - Mojo can now interpret simple LLVM intrinsics in parameter expressions, enabling things like `count_leading_zeros` to work at compile time: - [Issue #933](https://github.com/modular/mojo/issues/933). + [Issue #933](https://github.com/modular/max/issues/933). - Introduced the `@explicit_destroy` annotation, the `__disable_del` keyword, the `UnknownDestructibility` trait, and the `ImplicitlyDestructible` keyword, @@ -1041,8 +1041,8 @@ detailed information in the following sections: 'strong reference' pointer. - Support for multi-dimensional indexing and slicing for `PythonObject` - (PR [#3549](https://github.com/modular/mojo/pull/3549), - PR [#3583](https://github.com/modular/mojo/pull/3583)). + (PR [#3549](https://github.com/modular/max/pull/3549), + PR [#3583](https://github.com/modular/max/pull/3583)). ```mojo var np = Python.import_module("numpy") @@ -1055,7 +1055,7 @@ detailed information in the following sections: - Added [`PythonObject.__contains__()`](/mojo/stdlib/python/python_object/PythonObject#__contains__). - ([PR #3101](https://github.com/modular/mojo/pull/3101)) + ([PR #3101](https://github.com/modular/max/pull/3101)) Example usage: @@ -1087,7 +1087,7 @@ detailed information in the following sections: semantics to Rust's [`Box<>`](https://doc.rust-lang.org/std/boxed/struct.Box.html) and C++'s [`std::unique_ptr`](https://en.cppreference.com/w/cpp/memory/unique_ptr). - ([PR #3524](https://github.com/modular/mojo/pull/3524)) + ([PR #3524](https://github.com/modular/max/pull/3524)) - `Arc` has been renamed to [`ArcPointer`](/mojo/stdlib/memory/arc/ArcPointer), for consistency with `OwnedPointer`. @@ -1117,7 +1117,7 @@ detailed information in the following sections: [`FloatableRaising`](/mojo/stdlib/builtin/floatable/FloatableRaising) traits to denote types that can be converted to a `Float64` value using the builtin `float` function. Made `SIMD` and `FloatLiteral` conform to the `Floatable` - trait. ([PR #3163](https://github.com/modular/mojo/pull/3163)) + trait. ([PR #3163](https://github.com/modular/max/pull/3163)) ```mojo fn foo[F: Floatable](v: F): @@ -1135,7 +1135,7 @@ detailed information in the following sections: - Introduced the [`random.shuffle()`](/mojo/stdlib/random/random/shuffle) function for randomizing the elements of a `List`. - ([PR #3327](https://github.com/modular/mojo/pull/3327)) + ([PR #3327](https://github.com/modular/max/pull/3327)) Example: @@ -1153,20 +1153,20 @@ detailed information in the following sections: - [`Slice.step`](/mojo/stdlib/builtin/builtin_slice/Slice#fields) is now an `Optional[Int]`, matching the optionality of `slice.step` in Python. - ([PR #3160](https://github.com/modular/mojo/pull/3160)) + ([PR #3160](https://github.com/modular/max/pull/3160)) - There is now a [`Byte`](/mojo/stdlib/builtin/simd/#aliases) alias to better express intent when working with a pack of bits. - ([PR #3670](https://github.com/modular/mojo/pull/3670)). + ([PR #3670](https://github.com/modular/max/pull/3670)). - Expanded [`os.path`](/mojo/stdlib/os/path/path/) with new functions: - - `os.path.expandvars()`: Expands environment variables in a path ([PR #3735](https://github.com/modular/mojo/pull/3735)). + - `os.path.expandvars()`: Expands environment variables in a path ([PR #3735](https://github.com/modular/max/pull/3735)). - `os.path.splitroot()`: Split a path into drive, root and tail. - ([PR #3780](https://github.com/modular/mojo/pull/3780)). + ([PR #3780](https://github.com/modular/max/pull/3780)). - Added a [`reserve()`](/mojo/stdlib/collections/string/String#reserve) method and new constructor to the `String` struct to allocate additional capacity. - ([PR #3755](https://github.com/modular/mojo/pull/3755)). + ([PR #3755](https://github.com/modular/max/pull/3755)). - A new [`StringLiteral.get[some_stringable]()`](/mojo/stdlib/builtin/string_literal/StringLiteral#get) @@ -1192,7 +1192,7 @@ detailed information in the following sections: - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) now implements `split()` which can be used to split a `StringRef` into a `List[StringRef]` by a - delimiter. ([PR #2705](https://github.com/modular/mojo/pull/2705)) + delimiter. ([PR #2705](https://github.com/modular/max/pull/2705)) - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) is now representable so `repr(StringRef("hello"))` will return `StringRef('hello')`. @@ -1251,7 +1251,7 @@ detailed information in the following sections: - The VS Code extension now has the `mojo.run.focusOnTerminalAfterLaunch` setting, which controls whether to focus on the terminal used by the `Mojo: Run Mojo File` command or on the editor after launch. - [Issue #3532](https://github.com/modular/mojo/issues/3532). + [Issue #3532](https://github.com/modular/max/issues/3532). - The VS Code extension now has the `mojo.SDK.additionalSDKs` setting, which allows the user to provide a list of MAX SDKs that the extension can use when @@ -1316,40 +1316,40 @@ detailed information in the following sections: - Lifetime tracking is now fully field sensitive, which makes the uninitialized variable checker more precise. -- [Issue #1310](https://github.com/modular/mojo/issues/1310) - Mojo permits +- [Issue #1310](https://github.com/modular/max/issues/1310) - Mojo permits the use of any constructor for implicit conversions -- [Issue #1632](https://github.com/modular/mojo/issues/1632) - Mojo produces +- [Issue #1632](https://github.com/modular/max/issues/1632) - Mojo produces weird error when inout function is used in non mutating function -- [Issue #3444](https://github.com/modular/mojo/issues/3444) - Raising init +- [Issue #3444](https://github.com/modular/max/issues/3444) - Raising init causing use of uninitialized variable -- [Issue #3544](https://github.com/modular/mojo/issues/3544) - Known +- [Issue #3544](https://github.com/modular/max/issues/3544) - Known mutable `ref` argument are not optimized as `noalias` by LLVM. -- [Issue #3559](https://github.com/modular/mojo/issues/3559) - VariadicPack +- [Issue #3559](https://github.com/modular/max/issues/3559) - VariadicPack doesn't extend the lifetimes of the values it references. -- [Issue #3627](https://github.com/modular/mojo/issues/3627) - Compiler +- [Issue #3627](https://github.com/modular/max/issues/3627) - Compiler overlooked exclusivity violation caused by `ref [MutableAnyOrigin] T` -- [Issue #3710](https://github.com/modular/mojo/issues/3710) - Mojo frees +- [Issue #3710](https://github.com/modular/max/issues/3710) - Mojo frees memory while reference to it is still in use. -- [Issue #3805](https://github.com/modular/mojo/issues/3805) - Crash When +- [Issue #3805](https://github.com/modular/max/issues/3805) - Crash When Initializing !llvm.ptr. -- [Issue #3816](https://github.com/modular/mojo/issues/3816) - Ternary +- [Issue #3816](https://github.com/modular/max/issues/3816) - Ternary if-operator doesn't propagate origin information. -- [Issue #3815](https://github.com/modular/mojo/issues/3815) - +- [Issue #3815](https://github.com/modular/max/issues/3815) - [BUG] Mutability not preserved when taking the union of two origins. -- [Issue #3829](https://github.com/modular/mojo/issues/3829) - Poor error +- [Issue #3829](https://github.com/modular/max/issues/3829) - Poor error message when invoking a function pointer upon an argument of the wrong origin -- [Issue #3830](https://github.com/modular/mojo/issues/3830) - Failures +- [Issue #3830](https://github.com/modular/max/issues/3830) - Failures emitting register RValues to ref arguments. - The VS Code extension now auto-updates its private copy of the MAX SDK. @@ -1555,7 +1555,7 @@ detailed information in the following sections: The Mojo compiler now always passes the "new value" being set using the last keyword argument of the `__setitem__()`, e.g. turning `yourType[1, 2] = 3` into `yourType.__setitem__(1, 2, val=3)`. This fixes - [Issue #248](https://github.com/modular/mojo/issues/248). + [Issue #248](https://github.com/modular/max/issues/248). - Mojo context managers used in regions of code that may raise no longer need to define a "conditional" exit function in the form of @@ -1682,7 +1682,7 @@ detailed information in the following sections: - Added the builtin [`input()`](/mojo/stdlib/builtin/io/input) function, which behaves the same as Python. - ([PR #3392](https://github.com/modular/mojo/pull/3392)) + ([PR #3392](https://github.com/modular/max/pull/3392)) ```mojo name = input("Enter your name: ") @@ -1693,7 +1693,7 @@ detailed information in the following sections: There is a known issue when running the `input()` function with JIT compilation (see issue - [#3479](https://github.com/modular/mojo/issues/3479)). + [#3479](https://github.com/modular/max/issues/3479)). - [`print()`](/mojo/stdlib/builtin/io/print) now requires that its arguments conform to the [`Formattable`](/mojo/stdlib/utils/format/Formattable) trait. @@ -1766,12 +1766,12 @@ detailed information in the following sections: - Added [`TemporaryDirectory`](/mojo/stdlib/tempfile/tempfile/TemporaryDirectory) in module `tempfile`. - ([PR 2743](https://github.com/modular/mojo/pull/2743)) + ([PR 2743](https://github.com/modular/max/pull/2743)) - Added [`NamedTemporaryFile`](/mojo/stdlib/tempfile/tempfile/NamedTemporaryFile) in module `tempfile`. - ([PR 2762](https://github.com/modular/mojo/pull/2762)) + ([PR 2762](https://github.com/modular/max/pull/2762)) - [`String`](/mojo/stdlib/collections/string/String) and friends: @@ -1780,7 +1780,7 @@ detailed information in the following sections: - Added the [`String.format()`](/mojo/stdlib/collections/string/String#format) method. - ([PR #2771](https://github.com/modular/mojo/pull/2771)) + ([PR #2771](https://github.com/modular/max/pull/2771)) Supports automatic and manual indexing of `*args`. @@ -1801,7 +1801,7 @@ detailed information in the following sections: - [`String.format()`](/mojo/stdlib/collections/string/String#format) now supports conversion flags `!s` and `!r`, allowing for `str()` and `repr()` conversions within format strings. - ([PR #3279](https://github.com/modular/mojo/pull/3279)) + ([PR #3279](https://github.com/modular/max/pull/3279)) Example: @@ -1818,14 +1818,14 @@ detailed information in the following sections: [`ljust()`](/mojo/stdlib/collections/string/String#ljust), and [`center()`](/mojo/stdlib/collections/string/String#center) methods to return a justified string based on width and fillchar. ([PR - #3278](https://github.com/modular/mojo/pull/3278)) + #3278](https://github.com/modular/max/pull/3278)) - The [`atol()`](/mojo/stdlib/collections/string/atol) function now correctly supports leading underscores, (e.g.`atol("0x_ff", 0)`), when the appropriate base is specified or inferred (base 0). non-base-10 integer literals as per Python's [Integer Literals](). - ([PR #3180](https://github.com/modular/mojo/pull/3180)) + ([PR #3180](https://github.com/modular/max/pull/3180)) - Added the [`unsafe_cstr_ptr()`](/mojo/stdlib/collections/string/String#unsafe_cstr_ptr) @@ -1843,7 +1843,7 @@ detailed information in the following sections: and [`StringSlice.__len__()`](/mojo/stdlib/utils/string_slice/StringSlice#__len__) now does return the Unicode codepoints length. - ([PR #2960](https://github.com/modular/mojo/pull/2960)) + ([PR #2960](https://github.com/modular/max/pull/2960)) - Added a new [`StaticString`](/mojo/stdlib/utils/string_slice/#aliases) type alias. This can be used in place of @@ -1987,7 +1987,7 @@ detailed information in the following sections: assert_equal(str(stacked), "[1 2 3 4 5 6]") ``` - ([PR #3264](https://github.com/modular/mojo/pull/3264)) + ([PR #3264](https://github.com/modular/max/pull/3264)) - Accessing local Python modules with [`Python.add_to_path(".")`](/mojo/stdlib/python/python/Python#add_to_path) @@ -2002,7 +2002,7 @@ detailed information in the following sections: - [`List`](/mojo/stdlib/collections/list/List) values are now equality comparable with `==` and `!=` when their element type is equality - comparable. ([PR #3195](https://github.com/modular/mojo/pull/3195)) + comparable. ([PR #3195](https://github.com/modular/max/pull/3195)) - [`Optional`](/mojo/stdlib/collections/optional/Optional) values are now equality comparable with `==` and `!=` when their element type is equality @@ -2010,22 +2010,22 @@ detailed information in the following sections: - Added a new [`Counter`](/mojo/stdlib/collections/counter/Counter) dictionary-like type, matching most of the features of the Python one. - ([PR #2910](https://github.com/modular/mojo/pull/2910)) + ([PR #2910](https://github.com/modular/max/pull/2910)) - [`Dict`](/mojo/stdlib/collections/dict/Dict) now implements [`setdefault()`](/mojo/stdlib/collections/dict/Dict#setdefault), which gets a value from the dictionary by key, or sets it to a default if it doesn't exist. - ([PR #2803](https://github.com/modular/mojo/pull/2803)) + ([PR #2803](https://github.com/modular/max/pull/2803)) - `Dict` now supports [`popitem()`](/mojo/stdlib/collections/dict/Dict#popitem), which removes and returns the last item in the `Dict`. - ([PR #2701](https://github.com/modular/mojo/pull/2701)) + ([PR #2701](https://github.com/modular/max/pull/2701)) - Added a [`Dict.__init__()`](/mojo/stdlib/collections/dict/Dict#__init__) overload to specify initial capacity. - ([PR #3171](https://github.com/modular/mojo/pull/3171)) + ([PR #3171](https://github.com/modular/max/pull/3171)) The capacity has to be a power of two and greater than or equal to 8. @@ -2040,7 +2040,7 @@ detailed information in the following sections: - `ListLiteral` now supports [`__contains__()`](/mojo/stdlib/builtin/builtin_list/ListLiteral#__contains__). - ([PR #3251](https://github.com/modular/mojo/pull/3251)) + ([PR #3251](https://github.com/modular/max/pull/3251)) - Filesystem and environment utilities: @@ -2122,7 +2122,7 @@ detailed information in the following sections: - Added the [`Identifiable`](/mojo/stdlib/builtin/identifiable/Identifiable) trait, used to describe types that implement the `__is__()` and `__isnot__()` trait methods. - ([PR #2807](https://github.com/modular/mojo/pull/2807)) + ([PR #2807](https://github.com/modular/max/pull/2807)) - Types conforming to [`Boolable`](/mojo/stdlib/builtin/bool/Boolable) (that is, those implementing `__bool__()`) no longer implicitly convert to `Bool`. @@ -2164,7 +2164,7 @@ detailed information in the following sections: - Added the [`oct()`](/mojo/stdlib/builtin/format_int/oct) builtin function for formatting an integer in octal. - ([PR #2914](https://github.com/modular/mojo/pull/2914)) + ([PR #2914](https://github.com/modular/max/pull/2914)) - Added the [`assert_is()`](/mojo/stdlib/testing/testing/assert_is) and [`assert_is_not()`](/mojo/stdlib/testing/testing/assert_is_not) test @@ -2172,7 +2172,7 @@ detailed information in the following sections: - The [`math`](/mojo/stdlib/math/constants/) package now includes the `pi`, `e`, and `tau` constants (Closes Issue - [#2135](https://github.com/modular/mojo/issues/2135)). + [#2135](https://github.com/modular/max/issues/2135)). - The [`ulp`](/mojo/stdlib/math/math/ulp) function from `numerics` has been moved to the `math` module. @@ -2181,7 +2181,7 @@ detailed information in the following sections: [`bit_reverse()`](/mojo/stdlib/bit/bit/bit_reverse), [`byte_swap()`](/mojo/stdlib/bit/bit/byte_swap), and [`pop_count()`](/mojo/stdlib/bit/bit/pop_count) for the `Int` type. - ([PR #3150](https://github.com/modular/mojo/pull/3150)) + ([PR #3150](https://github.com/modular/max/pull/3150)) - A few `bit` functions have been renamed for clarity: @@ -2193,7 +2193,7 @@ detailed information in the following sections: `OptionalReg[Int]` for `start` and `end` and implements a constructor which accepts optional values. `Slice._has_end()` has also been removed since a Slice with no end is now represented by an empty `Slice.end` option. - ([PR #2495](https://github.com/modular/mojo/pull/2495)) + ([PR #2495](https://github.com/modular/max/pull/2495)) ```mojo var s = Slice(1, None, 2) @@ -2305,28 +2305,28 @@ detailed information in the following sections: - Mojo now prints `ref` arguments and results in generated documentation correctly. -- [#1734](https://github.com/modular/mojo/issues/1734) - Calling +- [#1734](https://github.com/modular/max/issues/1734) - Calling `__copyinit__` on self causes crash. -- [#3142](https://github.com/modular/mojo/issues/3142) - [QoI] Confusing +- [#3142](https://github.com/modular/max/issues/3142) - [QoI] Confusing `__setitem__` method is failing with a "must be mutable" error. -- [#248](https://github.com/modular/mojo/issues/248) - [Feature] Enable +- [#248](https://github.com/modular/max/issues/248) - [Feature] Enable `__setitem__` to take variadic arguments -- [#3065](https://github.com/modular/mojo/issues/3065) - Fix incorrect behavior +- [#3065](https://github.com/modular/max/issues/3065) - Fix incorrect behavior of `SIMD.__int__` on unsigned types -- [#3045](https://github.com/modular/mojo/issues/3045) - Disable implicit SIMD +- [#3045](https://github.com/modular/max/issues/3045) - Disable implicit SIMD conversion routes through `Bool` -- [#3126](https://github.com/modular/mojo/issues/3126) - [BUG] List doesn't +- [#3126](https://github.com/modular/max/issues/3126) - [BUG] List doesn't work at compile time. -- [#3237](https://github.com/modular/mojo/issues/3237) - [BUG] Difference +- [#3237](https://github.com/modular/max/issues/3237) - [BUG] Difference between `__getitem__` and `[.]` operator. -- [#3336](https://github.com/modular/mojo/issues/3336) - Fix outdated +- [#3336](https://github.com/modular/max/issues/3336) - Fix outdated references to `let` in REPL documentation. - The VS Code extension no longer caches the information of the selected @@ -2545,7 +2545,7 @@ Big themes for this release: - Added built-in [`repr()`](/mojo/stdlib/builtin/repr/repr) function and [`Representable`](/mojo/stdlib/builtin/repr/Representable) trait. - ([PR #2361](https://github.com/modular/mojo/pull/2361)) + ([PR #2361](https://github.com/modular/max/pull/2361)) - Added the [`Indexer`](/mojo/stdlib/builtin/int/Indexer) trait to denote types that implement the `__index__()` method which allows these types to be @@ -2592,7 +2592,7 @@ Big themes for this release: print(a[AlwaysZero()]) # works and prints 1 ``` - ([PR #2685](https://github.com/modular/mojo/pull/2685)) + ([PR #2685](https://github.com/modular/max/pull/2685)) - Added traits allowing user-defined types to be supported by various built-in and math functions. @@ -2670,14 +2670,14 @@ Big themes for this release: [`rstrip()`](/mojo/stdlib/collections/string/String#rstrip) can now remove custom characters other than whitespace. In addition, there are now several useful aliases for whitespace, ASCII lower/uppercase, and so on. - ([PR #2555](https://github.com/modular/mojo/pull/2555)) + ([PR #2555](https://github.com/modular/max/pull/2555)) - `String` now has a [`splitlines()`](/mojo/stdlib/collections/string/String#splitlines) method, which allows splitting strings at line boundaries. This method supports [universal newlines](https://docs.python.org/3/glossary.html#term-universal-newlines) and provides an option to retain or remove the line break characters. - ([PR #2810](https://github.com/modular/mojo/pull/2810)) + ([PR #2810](https://github.com/modular/max/pull/2810)) - `InlinedString` has been renamed to [`InlineString`](/mojo/stdlib/utils/inline_string/InlineString) to be @@ -2686,12 +2686,12 @@ Big themes for this release: - [`StringRef`](/mojo/stdlib/utils/stringref/StringRef) now implements [`strip()`](/mojo/stdlib/utils/stringref/StringRef#strip), which can be used to remove leading and trailing whitespace. - ([PR #2683](https://github.com/modular/mojo/pull/2683)) + ([PR #2683](https://github.com/modular/max/pull/2683)) - `StringRef` now implements [`startswith()`](/mojo/stdlib/utils/stringref/StringRef#startswith) and [`endswith()`](/mojo/stdlib/utils/stringref/StringRef#endswith). - ([PR #2710](https://github.com/modular/mojo/pull/2710)) + ([PR #2710](https://github.com/modular/max/pull/2710)) - Added a new [`StringSlice`](/mojo/stdlib/utils/string_slice/StringSlice) type, to replace uses of the unsafe `StringRef` type in standard library @@ -2743,7 +2743,7 @@ Big themes for this release: - Added a built-in [`sort()`](/mojo/stdlib/builtin/sort/sort) function for lists of elements that conform to the [`ComparableCollectionElement`](/mojo/stdlib/builtin/value/ComparableCollectionElement) - trait.([PR #2609](https://github.com/modular/mojo/pull/2609)) + trait.([PR #2609](https://github.com/modular/max/pull/2609)) - [`int()`](/mojo/stdlib/builtin/int/int-function) can now take a string and a specified base to parse an integer from a @@ -2751,17 +2751,17 @@ Big themes for this release: specified, the string will be parsed as if it was an integer literal, with the base determined by whether the string contains the prefix `"0x"`, `"0o"`, or `"0b"`. - ([PR #2273](https://github.com/modular/mojo/pull/2273), - fixes [#2274](https://github.com/modular/mojo/issues/2274)) + ([PR #2273](https://github.com/modular/max/pull/2273), + fixes [#2274](https://github.com/modular/max/issues/2274)) - Added the [`bin()`](/mojo/stdlib/builtin/format_int/bin) built-in function to convert integral types into their binary string representation. - ([PR #2603](https://github.com/modular/mojo/pull/2603)) + ([PR #2603](https://github.com/modular/max/pull/2603)) - Added the [`atof()`](/mojo/stdlib/collections/string/atof) built-in function, which can convert a `String` to a `float64`. - ([PR #2649](https://github.com/modular/mojo/pull/2649)) + ([PR #2649](https://github.com/modular/max/pull/2649)) - You can now use the built-in [`any()`](/mojo/stdlib/builtin/bool/any) and [`all()`](/mojo/stdlib/builtin/bool/all) functions to check for truthy @@ -2769,7 +2769,7 @@ Big themes for this release: `size=1`, You must explicitly use these to get the truthy value of a SIMD vector with more than one element. This avoids common bugs around implicit conversion of `SIMD` to `Bool`. - ([PR #2600](https://github.com/modular/mojo/pull/2600)) + ([PR #2600](https://github.com/modular/max/pull/2600)) For example: @@ -2784,10 +2784,10 @@ Big themes for this release: - [`object`](/mojo/stdlib/builtin/object/) now implements all the bitwise operators. - ([PR #2324](https://github.com/modular/mojo/pull/2324)) + ([PR #2324](https://github.com/modular/max/pull/2324)) - [`Tuple`](/mojo/stdlib/builtin/tuple/Tuple) now supports `__contains__()`. - ([PR #2709](https://github.com/modular/mojo/pull/2709)) For example: + ([PR #2709](https://github.com/modular/max/pull/2709)) For example: ```mojo var x = Tuple(1, 2, True) @@ -2837,12 +2837,12 @@ Big themes for this release: Note that `List` doesn't conform to the `Stringable` trait yet so you cannot use `str(my_list)` yet. - ([PR #2673](https://github.com/modular/mojo/pull/2673)) + ([PR #2673](https://github.com/modular/max/pull/2673)) - `List` has a simplified syntax to call the [`count()`](/mojo/stdlib/collections/list/List#count) method: `my_list.count(x)`. - ([PR #2675](https://github.com/modular/mojo/pull/2675)) + ([PR #2675](https://github.com/modular/max/pull/2675)) - `List()` now supports `__contains__()`, so you can now use lists with the `in` operator: @@ -2851,84 +2851,84 @@ Big themes for this release: if x in my_list: ``` - ([PR #2667](https://github.com/modular/mojo/pull/2667)) + ([PR #2667](https://github.com/modular/max/pull/2667)) - `List` now has an [`unsafe_get()`](/mojo/stdlib/collections/list/List#unsafe_get) to get the reference to an element without bounds check or wraparound for negative indices. Note that this method is unsafe. Use with caution. - [PR #2800](https://github.com/modular/mojo/pull/2800)) + [PR #2800](https://github.com/modular/max/pull/2800)) - Added a [`fromkeys()`](/mojo/stdlib/collections/dict/Dict#fromkeys) method to `Dict` to return a `Dict` with the specified keys and values. - ([PR 2622](https://github.com/modular/mojo/pull/2622)) + ([PR 2622](https://github.com/modular/max/pull/2622)) - Added a [`clear()`](/mojo/stdlib/collections/dict/Dict#clear) method to - `Dict`. ([PR 2627](https://github.com/modular/mojo/pull/2627)) + `Dict`. ([PR 2627](https://github.com/modular/max/pull/2627)) - `Dict` now supports [`reversed()`](/mojo/stdlib/builtin/reversed/reversed) for its `items()` and `values()` iterators. - ([PR #2340](https://github.com/modular/mojo/pull/2340)) + ([PR #2340](https://github.com/modular/max/pull/2340)) - `Dict` now has a simplified conversion to `String` with `my_dict.__str__()`. Note that `Dict` does not conform to the `Stringable` trait so `str(my_dict)` is not possible yet. - ([PR #2674](https://github.com/modular/mojo/pull/2674)) + ([PR #2674](https://github.com/modular/max/pull/2674)) - `Dict` now implements [`get(key)`](/mojo/stdlib/collections/dict/Dict#get) and `get(key, default)` functions. - ([PR #2519](https://github.com/modular/mojo/pull/2519)) + ([PR #2519](https://github.com/modular/max/pull/2519)) - Added a temporary `__get_ref(key)` method to `Dict`, allowing you to get a `Reference` to a dictionary value. - Added a new [`InlineList`](/mojo/stdlib/collections/inline_list/InlineList) type, a stack-allocated list with a static maximum size. - ([PR 2587#](https://github.com/modular/mojo/pull/2587)) - ([PR #2703](https://github.com/modular/mojo/pull/2703)) + ([PR 2587#](https://github.com/modular/max/pull/2587)) + ([PR #2703](https://github.com/modular/max/pull/2703)) - Added a new [`Span`](/mojo/stdlib/memory/span/Span) type for taking slices of contiguous collections. - ([PR #2595](https://github.com/modular/mojo/pull/2595)) + ([PR #2595](https://github.com/modular/max/pull/2595)) - [`os`](/mojo/stdlib/os/os/) module: - The `os` module now provides functionality for adding and removing directories using [`mkdir()`](/mojo/stdlib/os/os/mkdir) and [`rmdir()`](/mojo/stdlib/os/os/rmdir). - ([PR #2430](https://github.com/modular/mojo/pull/2430)) + ([PR #2430](https://github.com/modular/max/pull/2430)) - Added the [`os.path.getsize()`](/mojo/stdlib/os/path/path/getsize) function, which gives the size in bytes of the file identified by the path. - ([PR 2626](https://github.com/modular/mojo/pull/2626)) + ([PR 2626](https://github.com/modular/max/pull/2626)) - Added [`os.path.join()`](/mojo/stdlib/os/path/path/join) function. - ([PR 2792](https://github.com/modular/mojo/pull/2792)) + ([PR 2792](https://github.com/modular/max/pull/2792)) - Added a new [`tempfile`](/mojo/stdlib/tempfile/tempfile/) module, with `gettempdir()` and `mkdtemp()` functions. - ([PR 2742](https://github.com/modular/mojo/pull/2742)) + ([PR 2742](https://github.com/modular/max/pull/2742)) - [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) type: - Added [`SIMD.shuffle()`](/mojo/stdlib/builtin/simd/SIMD#shuffle) with `IndexList` mask. - ([PR #2315](https://github.com/modular/mojo/pull/2315)) + ([PR #2315](https://github.com/modular/max/pull/2315)) - [`SIMD.__bool__()`](/mojo/stdlib/builtin/simd/SIMD#__bool__) is constrained such that it only works when `size` is `1`. For SIMD vectors with more than one element, use [`any()`](/mojo/stdlib/builtin/bool/any) or [`all()`](/mojo/stdlib/builtin/bool/all). - ([PR #2502](https://github.com/modular/mojo/pull/2502)) + ([PR #2502](https://github.com/modular/max/pull/2502)) - The [`SIMD.reduce_or()`](/mojo/stdlib/builtin/simd/SIMD#reduce_or) and [`SIMD.reduce_and()`](/mojo/stdlib/builtin/simd/SIMD#reduce_and) methods are now bitwise operations, and support integer types. - ([PR #2671](https://github.com/modular/mojo/pull/2671)) + ([PR #2671](https://github.com/modular/max/pull/2671)) - Added [`SIMD.__repr__()`](/mojo/stdlib/builtin/simd/SIMD#__repr__) to get the verbose string representation of `SIMD` types. - ([PR #2728](https://github.com/modular/mojo/pull/2728)) + ([PR #2728](https://github.com/modular/max/pull/2728)) - [`math`](/mojo/stdlib/math/math/) package: @@ -2964,7 +2964,7 @@ Big themes for this release: - [`math.gcd()`](/mojo/stdlib/math/math/gcd) now works on negative inputs, and like Python's implementation, accepts a variadic list of integers. New overloads for a `List` or `Span`of integers are also added. - ([PR #2777](https://github.com/modular/mojo/pull/2777)) + ([PR #2777](https://github.com/modular/max/pull/2777)) - Async and coroutines: @@ -2988,12 +2988,12 @@ Big themes for this release: that works on memory-only types. Compare with the existing [`StaticTuple`](/mojo/stdlib/utils/static_tuple/StaticTuple) type, which is conceptually an array type, but only works on `AnyTrivialRegType`. - ([PR #2294](https://github.com/modular/mojo/pull/2294)) + ([PR #2294](https://github.com/modular/max/pull/2294)) - The [`base64`](/mojo/stdlib/base64/) package now includes encoding and decoding support for both the Base64 and Base16 encoding schemes. - ([PR #2364](https://github.com/modular/mojo/pull/2364)) - ([PR #2584](https://github.com/modular/mojo/pull/2584)) + ([PR #2364](https://github.com/modular/max/pull/2364)) + ([PR #2584](https://github.com/modular/max/pull/2584)) - The `take()` function in [`Variant`](/mojo/stdlib/utils/variant/Variant) and [`Optional`](/mojo/stdlib/collections/optional/Optional) has been renamed to @@ -3010,7 +3010,7 @@ Big themes for this release: - `infinity` and `NaN` are now correctly handled in [`testing.assert_almost_equal()`](/mojo/stdlib/testing/testing/assert_almost_equal) and an `inf` function has been added to `utils/numerics.mojo`. - ([PR #2375](https://github.com/modular/mojo/pull/2375)) + ([PR #2375](https://github.com/modular/max/pull/2375)) ### Tooling changes @@ -3124,16 +3124,16 @@ Big themes for this release: #### 🛠️ Fixed -- [#1837](https://github.com/modular/mojo/issues/1837) Fix self-referential +- [#1837](https://github.com/modular/max/issues/1837) Fix self-referential variant crashing the compiler. -- [#2363](https://github.com/modular/mojo/issues/2363) Fix LSP crashing on +- [#2363](https://github.com/modular/max/issues/2363) Fix LSP crashing on simple trait definitions. -- [#1787](https://github.com/modular/mojo/issues/1787) Fix error when using +- [#1787](https://github.com/modular/max/issues/1787) Fix error when using `//` on `FloatLiteral` in alias expression. - Made several improvements to dictionary performance. Dicts with integer keys are most heavily affected, but large dicts and dicts with large values will also see large improvements. -- [#2692](https://github.com/modular/mojo/issues/2692) Fix `assert_raises` +- [#2692](https://github.com/modular/max/issues/2692) Fix `assert_raises` to include calling location. ### Special thanks @@ -3322,21 +3322,21 @@ Special thanks to our community contributors: - `pop(index)` for removing an element at a particular index. By default, `List.pop()` removes the last element in the list. ([@LJ-9801](https://github.com/LJ-9801), fixes - [#2017](https://github.com/modular/mojo/issues/2017)) + [#2017](https://github.com/modular/max/issues/2017)) - `resize(new_size)` for resizing the list without the need to specify an additional value. ([@mikowals](https://github.com/mikowals), fixes - [#2133](https://github.com/modular/mojo/issues/2133)) + [#2133](https://github.com/modular/max/issues/2133)) - `insert(index, value)` for inserting a value at a specified index into the `List`. ([@whym1here](https://github.com/whym1here), fixes - [#2134](https://github.com/modular/mojo/issues/2134)) + [#2134](https://github.com/modular/max/issues/2134)) - A new constructor `List(ptr, size, capacity)` to to avoid needing to do a deep copy of an existing contiguous memory allocation when constructing a new `List`. ([@StandinKP](https://github.com/StandinKP), fixes - [#2170](https://github.com/modular/mojo/issues/2170)) + [#2170](https://github.com/modular/max/issues/2170)) - [`Dict`](/mojo/stdlib/collections/dict/Dict) now has a `update()` method to update keys/values from another `Dict`. @@ -3377,7 +3377,7 @@ Special thanks to our community contributors: ([@helehex](https://github.com/helehex) and [@jayzhan211](https://github.com/jayzhan211), contributes towards - [#2325](https://github.com/modular/mojo/issues/2325)) + [#2325](https://github.com/modular/max/issues/2325)) - [`Optional`](/mojo/stdlib/collections/optional/Optional) now implements `__is__` and `__isnot__` methods so that you can compare an `Optional` with @@ -3524,7 +3524,7 @@ Special thanks to our community contributors: [`chr`](/mojo/stdlib/collections/string/chr) functions have been improved to accept any Unicode character. ([@mzaks](https://github.com/mzaks), contributes towards - [#1616](https://github.com/modular/mojo/issues/1616)) + [#1616](https://github.com/modular/max/issues/1616)) - [`atol()`](/mojo/stdlib/collections/string/atol) now handles whitespace. The `atol()`function is used internally by `String.__int__()`, so @@ -3533,7 +3533,7 @@ Special thanks to our community contributors: - [`SIMD`](/mojo/stdlib/builtin/simd/SIMD) now implements the `__rmod__()` method. ([@bgreni](https://github.com/bgreni), fixes - [#1482](https://github.com/modular/mojo/issues/1482)) + [#1482](https://github.com/modular/max/issues/1482)) - [`bool(None)`](/mojo/stdlib/builtin/bool/bool-function) is now implemented. ([@zhoujingya](https://github.com/zhoujingya)) @@ -3568,7 +3568,7 @@ Special thanks to our community contributors: division, modulo, and left and right shift operators, including the in-place and reverse variants. ([@LJ-9801](https://github.com/LJ-9801), fixes - [#2224](https://github.com/modular/mojo/issues/2224)) + [#2224](https://github.com/modular/max/issues/2224)) - Added checked arithmetic operations for `SIMD` integers. @@ -3600,7 +3600,7 @@ Special thanks to our community contributors: - Added [`os.remove()`](/mojo/stdlib/os/os/remove) and [`os.unlink()`](/mojo/stdlib/os/os/unlink) for deleting files. ([@artemiogr97](https://github.com/artemiogr97), fixes - [#2306](https://github.com/modular/mojo/issues/2306)) + [#2306](https://github.com/modular/max/issues/2306)) #### 🦋 Changed @@ -3620,15 +3620,15 @@ Special thanks to our community contributors: ``` ([@lsh](https://github.com/lsh), fixes - [#2179](https://github.com/modular/mojo/issues/2179)) + [#2179](https://github.com/modular/max/issues/2179)) -- Per the accepted community proposal, - [Standardize the representation of byte sequence as a sequence of unsigned - 8-bit integers](https://github.com/modular/mojo/blob/main/proposals/byte-as-uint8.md), - began transition to using `UInt8` by changing the data pointer of `Error` - to `DTypePointer[DType.uint8]`. - ([@gabrieldemarmiesse](https://github.com/gabrieldemarmiesse), contributes - towards [#2317](https://github.com/modular/mojo/issues/2317)) +- Per the accepted community proposal, [Standardize the representation of byte +sequence as a sequence of unsigned 8-bit +integers](https://github.com/modular/max/blob/main/mojo/proposals/byte-as-uint8.md), +began transition to using `UInt8` by changing the data pointer of `Error` to +`DTypePointer[DType.uint8]`. +([@gabrieldemarmiesse](https://github.com/gabrieldemarmiesse), contributes +towards [#2317](https://github.com/modular/max/issues/2317)) - Continued transition to `UnsafePointer` from the legacy `Pointer` type in various standard library APIs and internals. @@ -3700,56 +3700,56 @@ Special thanks to our community contributors: #### 🛠️ Fixed -- [#516](https://github.com/modular/mojo/issues/516) and - [#1817](https://github.com/modular/mojo/issues/1817) and many others, e.g. +- [#516](https://github.com/modular/max/issues/516) and + [#1817](https://github.com/modular/max/issues/1817) and many others, e.g. "Can't create a function that returns two strings." -- [#1178](https://github.com/modular/mojo/issues/1178) (os/kern) failure (5). +- [#1178](https://github.com/modular/max/issues/1178) (os/kern) failure (5). -- [#1609](https://github.com/modular/mojo/issues/1609) alias with +- [#1609](https://github.com/modular/max/issues/1609) alias with `DynamicVector[Tuple[Int]]` fails. -- [#1987](https://github.com/modular/mojo/issues/1987) Defining `main` +- [#1987](https://github.com/modular/max/issues/1987) Defining `main` in a Mojo package is an error, for now. This is not intended to work yet, erroring for now will help to prevent accidental undefined behavior. -- [#1215](https://github.com/modular/mojo/issues/1215) and - [#1949](https://github.com/modular/mojo/issues/1949) The Mojo LSP server no +- [#1215](https://github.com/modular/max/issues/1215) and + [#1949](https://github.com/modular/max/issues/1949) The Mojo LSP server no longer cuts off hover previews for functions with functional arguments, parameters, or results. -- [#1901](https://github.com/modular/mojo/issues/1901) Fixed Mojo LSP and +- [#1901](https://github.com/modular/max/issues/1901) Fixed Mojo LSP and documentation generation handling of inout arguments. -- [#1913](https://github.com/modular/mojo/issues/1913) - `0__` no longer +- [#1913](https://github.com/modular/max/issues/1913) - `0__` no longer crashes the Mojo parser. -- [#1924](https://github.com/modular/mojo/issues/1924) JIT debugging on Mac +- [#1924](https://github.com/modular/max/issues/1924) JIT debugging on Mac has been fixed. -- [#1941](https://github.com/modular/mojo/issues/1941) Mojo variadic arguments +- [#1941](https://github.com/modular/max/issues/1941) Mojo variadic arguments don't work with non-trivial register-only types. -- [#1963](https://github.com/modular/mojo/issues/1963) `a!=0` is now parsed +- [#1963](https://github.com/modular/max/issues/1963) `a!=0` is now parsed and formatted correctly by `mojo format`. -- [#1676](https://github.com/modular/mojo/issues/1676) Fix a crash related to +- [#1676](https://github.com/modular/max/issues/1676) Fix a crash related to `@value` decorator and structs with empty body. -- [#1917](https://github.com/modular/mojo/issues/1917) Fix a crash after +- [#1917](https://github.com/modular/max/issues/1917) Fix a crash after syntax error during tuple creation. -- [#2006](https://github.com/modular/mojo/issues/2006) The Mojo LSP now +- [#2006](https://github.com/modular/max/issues/2006) The Mojo LSP now properly supports signature types with named arguments and parameters. -- [#2007](https://github.com/modular/mojo/issues/2007) and - [#1997](https://github.com/modular/mojo/issues/1997) The Mojo LSP no longer +- [#2007](https://github.com/modular/max/issues/2007) and + [#1997](https://github.com/modular/max/issues/1997) The Mojo LSP no longer crashes on certain types of closures. -- [#1675](https://github.com/modular/mojo/issues/1675) Ensure `@value` +- [#1675](https://github.com/modular/max/issues/1675) Ensure `@value` decorator fails gracefully after duplicate field error. -- [#2068](https://github.com/modular/mojo/issues/2068) +- [#2068](https://github.com/modular/max/issues/2068) Fix `SIMD.reduce()` for size_out == 2. ([@soraros](https://github.com/soraros)) @@ -3762,7 +3762,7 @@ This release doesn't include any changes to Mojo. ### 🔥 Legendary - The Mojo standard library is now open source! Check out the - [README](https://github.com/modular/mojo/blob/main/stdlib/README.md) + [README](https://github.com/modular/max/blob/main/mojo/stdlib/README.md) for everything you need to get started. - Structs and other nominal types are now allowed to implicitly conform to @@ -3831,7 +3831,7 @@ This release doesn't include any changes to Mojo. - `let` declarations now produce a compile time error instead of a warning, our next step in [removing let - declarations](https://github.com/modular/mojo/blob/main/proposals/remove-let-decls.md). + declarations](https://github.com/modular/max/blob/main/mojo/proposals/remove-let-decls.md). The compiler still recognizes the `let` keyword for now in order to produce a good error message, but that will be removed in subsequent releases. @@ -4135,27 +4135,27 @@ fixed in a future release. #### 🛠️ Fixed -- [#1362](https://github.com/modular/mojo/issues/1362) - Parameter inference +- [#1362](https://github.com/modular/max/issues/1362) - Parameter inference now recursively matches function types. -- [#951](https://github.com/modular/mojo/issues/951) - Functions that were +- [#951](https://github.com/modular/max/issues/951) - Functions that were both `async` and `@always_inline` incorrectly errored. -- [#1858](https://github.com/modular/mojo/issues/1858) - Trait with parametric +- [#1858](https://github.com/modular/max/issues/1858) - Trait with parametric methods regression. -- [#1892](https://github.com/modular/mojo/issues/1892) - Forbid unsupported +- [#1892](https://github.com/modular/max/issues/1892) - Forbid unsupported decorators on traits. -- [#1735](https://github.com/modular/mojo/issues/1735) - Trait-typed values +- [#1735](https://github.com/modular/max/issues/1735) - Trait-typed values are incorrectly considered equal. -- [#1909](https://github.com/modular/mojo/issues/1909) - Crash due to nested +- [#1909](https://github.com/modular/max/issues/1909) - Crash due to nested import in unreachable block. -- [#1921](https://github.com/modular/mojo/issues/1921) - Parser crashes +- [#1921](https://github.com/modular/max/issues/1921) - Parser crashes binding Reference to lvalue with subtype lifetime. -- [#1945](https://github.com/modular/mojo/issues/1945) - `Optional[T].or_else()` +- [#1945](https://github.com/modular/max/issues/1945) - `Optional[T].or_else()` should return `T` instead of `Optional[T]`. -- [#1940](https://github.com/modular/mojo/issues/1940) - Constrain +- [#1940](https://github.com/modular/max/issues/1940) - Constrain `math.copysign` to floating point or integral types. -- [#1838](https://github.com/modular/mojo/issues/1838) - Variadic `print` +- [#1838](https://github.com/modular/max/issues/1838) - Variadic `print` does not work when specifying `end=""` -- [#1826](https://github.com/modular/mojo/issues/1826) - The `SIMD.reduce` +- [#1826](https://github.com/modular/max/issues/1826) - The `SIMD.reduce` methods correctly handle edge cases where `size_out >= size`. ## v24.1.1 (2024-03-18) @@ -4509,7 +4509,7 @@ installation issues. Otherwise it is functionally identical to Mojo 24.1. ### 🦋 Changed - As another step towards [removing let - declarations](https://github.com/modular/mojo/blob/main/proposals/remove-let-decls.md) + declarations](https://github.com/modular/max/blob/main/mojo/proposals/remove-let-decls.md) we have removed support for let declarations inside the compiler. To ease migration, we parse `let` declarations as a `var` declaration so your code won't break. We emit a warning about this, but please switch your code to @@ -4609,72 +4609,72 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#435](https://github.com/modular/mojo/issues/435) +- [#435](https://github.com/modular/max/issues/435) Structs with Self type don't always work. -- [#1540](https://github.com/modular/mojo/issues/1540) +- [#1540](https://github.com/modular/max/issues/1540) Crash in register_passable self referencing struct. -- [#1664](https://github.com/modular/mojo/issues/1664) - Improve error +- [#1664](https://github.com/modular/max/issues/1664) - Improve error message when `StaticTuple` is constructed with a negative size for the number of elements. -- [#1679](https://github.com/modular/mojo/issues/1679) - crash on SIMD of zero +- [#1679](https://github.com/modular/max/issues/1679) - crash on SIMD of zero elements. - Various crashes on invalid code: - [#1230](https://github.com/modular/mojo/issues/1230), - [#1699](https://github.com/modular/mojo/issues/1699), - [#1708](https://github.com/modular/mojo/issues/1708) -- [#1223](https://github.com/modular/mojo/issues/1223) - Crash when parametric + [#1230](https://github.com/modular/max/issues/1230), + [#1699](https://github.com/modular/max/issues/1699), + [#1708](https://github.com/modular/max/issues/1708) +- [#1223](https://github.com/modular/max/issues/1223) - Crash when parametric function is passed as (runtime) argument. The parser now errors out instead. -- [#1530](https://github.com/modular/mojo/issues/1530) - Crash during +- [#1530](https://github.com/modular/max/issues/1530) - Crash during diagnostic emission for parameter deduction failure. -- [#1538](https://github.com/modular/mojo/issues/1538) and [#1607]( - https://github.com/modular/mojo/issues/1607) - Crash when returning type +- [#1538](https://github.com/modular/max/issues/1538) and [#1607]( + https://github.com/modular/max/issues/1607) - Crash when returning type value instead of instance of expected type. This is a common mistake and the error now includes a hint to point users to the problem. -- [#1613](https://github.com/modular/mojo/issues/1613) - Wrong type name in +- [#1613](https://github.com/modular/max/issues/1613) - Wrong type name in error for incorrect `self` argument type in trait method declaration. -- [#1670](https://github.com/modular/mojo/issues/1670) - Crash on implicit +- [#1670](https://github.com/modular/max/issues/1670) - Crash on implicit conversion in a global variable declaration. -- [#1741](https://github.com/modular/mojo/issues/1741) - Mojo documentation +- [#1741](https://github.com/modular/max/issues/1741) - Mojo documentation generation doesn't show `inout`/`owned` on variadic arguments. -- [#1621](https://github.com/modular/mojo/issues/1621) - VS Code does not +- [#1621](https://github.com/modular/max/issues/1621) - VS Code does not highlight `raises` and `capturing` in functional type expressions. -- [#1617](https://github.com/modular/mojo/issues/1617) - VS Code does not +- [#1617](https://github.com/modular/max/issues/1617) - VS Code does not highlight `fn` in specific contexts. -- [#1740](https://github.com/modular/mojo/issues/1740) - LSP shows unrelated +- [#1740](https://github.com/modular/max/issues/1740) - LSP shows unrelated info when hovering over a struct. -- [#1238](https://github.com/modular/mojo/issues/1238) - File shadows Mojo +- [#1238](https://github.com/modular/max/issues/1238) - File shadows Mojo package path. -- [#1429](https://github.com/modular/mojo/issues/1429) - Crash when using +- [#1429](https://github.com/modular/max/issues/1429) - Crash when using nested import statement. -- [#1322](https://github.com/modular/mojo/issues/1322) - Crash when missing +- [#1322](https://github.com/modular/max/issues/1322) - Crash when missing types in variadic argument. -- [#1314](https://github.com/modular/mojo/issues/1314) - Typecheck error when +- [#1314](https://github.com/modular/max/issues/1314) - Typecheck error when binding alias to parametric function with default argument. -- [#1248](https://github.com/modular/mojo/issues/1248) - Crash when importing +- [#1248](https://github.com/modular/max/issues/1248) - Crash when importing from file the same name as another file in the search path. -- [#1354](https://github.com/modular/mojo/issues/1354) - Crash when importing +- [#1354](https://github.com/modular/max/issues/1354) - Crash when importing from local package. -- [#1488](https://github.com/modular/mojo/issues/1488) - Crash when setting +- [#1488](https://github.com/modular/max/issues/1488) - Crash when setting generic element field. -- [#1476](https://github.com/modular/mojo/issues/1476) - Crash in interpreter +- [#1476](https://github.com/modular/max/issues/1476) - Crash in interpreter when calling functions in parameter context. -- [#1537](https://github.com/modular/mojo/issues/1537) - Crash when copying +- [#1537](https://github.com/modular/max/issues/1537) - Crash when copying parameter value. -- [#1546](https://github.com/modular/mojo/issues/1546) - Modify nested vector +- [#1546](https://github.com/modular/max/issues/1546) - Modify nested vector element crashes parser. -- [#1558](https://github.com/modular/mojo/issues/1558) - Invalid import causes +- [#1558](https://github.com/modular/max/issues/1558) - Invalid import causes parser to crash. -- [#1562](https://github.com/modular/mojo/issues/1562) - Crash when calling +- [#1562](https://github.com/modular/max/issues/1562) - Crash when calling parametric type member function. -- [#1577](https://github.com/modular/mojo/issues/1577) - Crash when using +- [#1577](https://github.com/modular/max/issues/1577) - Crash when using unresolved package as a variable. -- [#1579](https://github.com/modular/mojo/issues/1579) - Member access into +- [#1579](https://github.com/modular/max/issues/1579) - Member access into type instances causes a crash. -- [#1602](https://github.com/modular/mojo/issues/1602) - Interpreter failure +- [#1602](https://github.com/modular/max/issues/1602) - Interpreter failure when constructing strings at compile time. -- [#1696](https://github.com/modular/mojo/issues/1696) - Fixed an issue that +- [#1696](https://github.com/modular/max/issues/1696) - Fixed an issue that caused syntax highlighting to occasionally fail. -- [#1549](https://github.com/modular/mojo/issues/1549) - Fixed an issue when +- [#1549](https://github.com/modular/max/issues/1549) - Fixed an issue when the shift amount is out of range in `SIMD.shift_left` and `SIMD.shift_right`. ## v0.7.0 (2024-01-25) @@ -5020,7 +5020,7 @@ experience without dedicated sugar. - The `simd_width` and `dtype` parameters of `polynomial_evaluate` have been switched. Based on the request in - [#1587](https://github.com/modular/mojo/issues/1587), the + [#1587](https://github.com/modular/max/issues/1587), the `polynomial_evaluate` function has also been extended so that the `coefficients` parameter can take either a either a [`StaticTuple`](/mojo/stdlib/utils/static_tuple/StaticTuple) or a @@ -5031,50 +5031,50 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#1595](https://github.com/modular/mojo/issues/1595) - Improve error message +- [#1595](https://github.com/modular/max/issues/1595) - Improve error message when trying to materialize `IntLiteral` in runtime code. - Raising an error from the initializer of a memory-only type now works correctly in the presence of complex control flow. Previously Mojo could run the destructor on `self` before it was initialized when exiting with an error. -- [#1096](https://github.com/modular/mojo/issues/1096) - Improve warning +- [#1096](https://github.com/modular/max/issues/1096) - Improve warning messages for dead code in conditionals like `or` expressions. -- [#1419](https://github.com/modular/mojo/issues/1419) - Fix assertion failure +- [#1419](https://github.com/modular/max/issues/1419) - Fix assertion failure with uninitialized lattice values. -- [#1402](https://github.com/modular/mojo/issues/1402) - Fix movable trait not +- [#1402](https://github.com/modular/max/issues/1402) - Fix movable trait not detected on recursive struct implemented with `AnyPointer`. -- [#1399](https://github.com/modular/mojo/issues/1399) - Fix parser crash when +- [#1399](https://github.com/modular/max/issues/1399) - Fix parser crash when a parameter type in a struct that implements a trait is misspelled. -- [#1152](https://github.com/modular/mojo/issues/1152) - Allow mutable `self` +- [#1152](https://github.com/modular/max/issues/1152) - Allow mutable `self` argument when overloading operators using dunder methods. -- [#1493](https://github.com/modular/mojo/issues/1493) - Fix crash in +- [#1493](https://github.com/modular/max/issues/1493) - Fix crash in `DynamicVector` copy constructor in certain situations. -- [#1316](https://github.com/modular/mojo/issues/1316) - The `benchmark.keep` +- [#1316](https://github.com/modular/max/issues/1316) - The `benchmark.keep` function now properly handles vector types. -- [#1505](https://github.com/modular/mojo/issues/1505) - The `simd.shuffle` +- [#1505](https://github.com/modular/max/issues/1505) - The `simd.shuffle` operation now works on 64 element permutations. -- [#1355](https://github.com/modular/mojo/issues/1355) - Fix `String.find()` +- [#1355](https://github.com/modular/max/issues/1355) - Fix `String.find()` returning wrong value when starting index is non-zero. -- [#1367](https://github.com/modular/mojo/issues/1367) - Fix `String.replace()` +- [#1367](https://github.com/modular/max/issues/1367) - Fix `String.replace()` returning incorrect results for multi-character search strings. -- [#1535](https://github.com/modular/mojo/issues/1535) - Invalid error `field +- [#1535](https://github.com/modular/max/issues/1535) - Invalid error `field 'w.x.y' destroyed out of the middle of a value, preventing the overall value from being destroyed`. -- [#1475](https://github.com/modular/mojo/issues/1475) - Assertion failure in +- [#1475](https://github.com/modular/max/issues/1475) - Assertion failure in nested loop. -- [#1591](https://github.com/modular/mojo/issues/1591) - Assertion failure +- [#1591](https://github.com/modular/max/issues/1591) - Assertion failure when using `AnyType` struct member. -- [#1503](https://github.com/modular/mojo/issues/1503) - Rename the mojo build +- [#1503](https://github.com/modular/max/issues/1503) - Rename the mojo build of LLDB to `mojo-lldb`, to prevent name collisions with the system's LLDB. -- [#1542](https://github.com/modular/mojo/issues/1542) - `@unroll` does not +- [#1542](https://github.com/modular/max/issues/1542) - `@unroll` does not accept alias as unroll factor. -- [#1443](https://github.com/modular/mojo/issues/1443) - Compiler crash on +- [#1443](https://github.com/modular/max/issues/1443) - Compiler crash on variadic list of traits. -- [#1604](https://github.com/modular/mojo/issues/1604) - Variable of trivial +- [#1604](https://github.com/modular/max/issues/1604) - Variable of trivial type not destroyed by transferring ownership. -- [#1341](https://github.com/modular/mojo/issues/1341) - Segmentation fault +- [#1341](https://github.com/modular/max/issues/1341) - Segmentation fault when passing closures around. -- [#217](https://github.com/modular/mojo/issues/217) - Closure state is +- [#217](https://github.com/modular/max/issues/217) - Closure state is stack allocated. ## v0.6.1 (2023-12-18) @@ -5136,23 +5136,23 @@ experience without dedicated sugar. ### 🛠️ Fixed -- [#1421](https://github.com/modular/mojo/issues/1421) - Fixed a crash when +- [#1421](https://github.com/modular/max/issues/1421) - Fixed a crash when using Tuples in the REPL. -- [#222](https://github.com/modular/mojo/issues/222) - Generate an error +- [#222](https://github.com/modular/max/issues/222) - Generate an error for obviously self recursive functions. -- [#1408](https://github.com/modular/mojo/issues/1408) - Fix overload +- [#1408](https://github.com/modular/max/issues/1408) - Fix overload resolution when candidates can return generic types. -- [#1413](https://github.com/modular/mojo/issues/1413) and - [#1395](https://github.com/modular/mojo/issues/1395) - Do not crash when +- [#1413](https://github.com/modular/max/issues/1413) and + [#1395](https://github.com/modular/max/issues/1395) - Do not crash when re-declaring a builtin declaration. -- [#1307](https://github.com/modular/mojo/issues/1307) - Fix compatibility of +- [#1307](https://github.com/modular/max/issues/1307) - Fix compatibility of function signatures that only differ in default argument values. -- [#1380](https://github.com/modular/mojo/issues/1380) - Fix printing +- [#1380](https://github.com/modular/max/issues/1380) - Fix printing of empty `String`. ## v0.6.0 (2023-12-04) @@ -5287,7 +5287,7 @@ experience without dedicated sugar. manual (now deprecated). Plus, the entire Mojo Manual and other Mojo docs are now [open-sourced on - GitHub](https://github.com/modular/mojo/tree/main/docs), and we'd love + GitHub](https://github.com/modular/max/tree/main/mojo/docs), and we'd love to accept contributions to help us improve them! - Mojo now supports partial automatic parameterization: when a function is @@ -5455,7 +5455,7 @@ the previous "read to EOF" behavior when size is negative. - The Mojo Language Server now implements the Document Symbols request. IDEs use this to provide support for **Outline View** and **Go to Symbol**. This - addresses [Issue #960](https://github.com/modular/mojo/issues/960). + addresses [Issue #960](https://github.com/modular/max/issues/960). - The Mojo Language Server now shows documentation when code completing modules or packages in `import` statements. @@ -5519,31 +5519,31 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#734](https://github.com/modular/mojo/issues/734) - Consumption of struct +- [#734](https://github.com/modular/max/issues/734) - Consumption of struct works only for types with a `__del__` method. -- [#910](https://github.com/modular/mojo/issues/910) - Parser crash when +- [#910](https://github.com/modular/max/issues/910) - Parser crash when using memory-only generic type as return of function that `raise`s. -- [#1060](https://github.com/modular/mojo/issues/1060) - Mojo happily parses +- [#1060](https://github.com/modular/max/issues/1060) - Mojo happily parses code that has messed up indentation -- [#1159](https://github.com/modular/mojo/issues/1159) - The language server +- [#1159](https://github.com/modular/max/issues/1159) - The language server doesn't warn about bad return type. -- [#1166](https://github.com/modular/mojo/issues/1166) - warning: unreachable +- [#1166](https://github.com/modular/max/issues/1166) - warning: unreachable code after return statement with context manager -- [#1098](https://github.com/modular/mojo/issues/1098) - The language server +- [#1098](https://github.com/modular/max/issues/1098) - The language server doesn't highlight properties of PythonObjects correctly. -- [#1153](https://github.com/modular/mojo/issues/1153) - The language server +- [#1153](https://github.com/modular/max/issues/1153) - The language server crashes when parsing an invalid multi-nested module import. -- [#1236](https://github.com/modular/mojo/issues/1236) - The language server +- [#1236](https://github.com/modular/max/issues/1236) - The language server doesn't show autocomplete in if statements. -- [#1246](https://github.com/modular/mojo/issues/1246) - Warning diagnostics +- [#1246](https://github.com/modular/max/issues/1246) - Warning diagnostics are transient in the presence of caching. ### Known Issue @@ -5798,32 +5798,32 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#532](https://github.com/modular/mojo/issues/532) - Compiler optimizing +- [#532](https://github.com/modular/max/issues/532) - Compiler optimizing while True loop away -- [#760](https://github.com/modular/mojo/issues/760) - Compilation error: +- [#760](https://github.com/modular/max/issues/760) - Compilation error: 'hlcf.for.yield' op specifies 0 branch inputs but target expected 1 along control-flow edge from here -- [#849](https://github.com/modular/mojo/issues/849) - The `Tensor` type is +- [#849](https://github.com/modular/max/issues/849) - The `Tensor` type is now initialized with zeros at construction time. -- [#912](https://github.com/modular/mojo/issues/912) - Invalid load for +- [#912](https://github.com/modular/max/issues/912) - Invalid load for `__get_address_as_lvalue`. -- [#916](https://github.com/modular/mojo/issues/916) - Parser crash when +- [#916](https://github.com/modular/max/issues/916) - Parser crash when specifying default values for `inout` arguments. -- [#943](https://github.com/modular/mojo/issues/943) - Mojo hangs if you +- [#943](https://github.com/modular/max/issues/943) - Mojo hangs if you use continue in the nested loop -- [#957](https://github.com/modular/mojo/issues/957) - Parser crash when a +- [#957](https://github.com/modular/max/issues/957) - Parser crash when a function call with variadic arguments of a memory-only type is evaluated at compile time. -- [#990](https://github.com/modular/mojo/issues/990) - Fixes rounding +- [#990](https://github.com/modular/max/issues/990) - Fixes rounding issue with floor division with negative numerator. -- [#1018](https://github.com/modular/mojo/issues/1018) - In some cases the +- [#1018](https://github.com/modular/max/issues/1018) - In some cases the sort function was returning invalid results. This release fixes some of these corner cases. -- [#1010](https://github.com/modular/mojo/issues/1010) - Initializing tensor +- [#1010](https://github.com/modular/max/issues/1010) - Initializing tensor in alias declaration results in crash. -- [#1110](https://github.com/modular/mojo/issues/1110) - The `time.now()` +- [#1110](https://github.com/modular/max/issues/1110) - The `time.now()` function now returns nanoseconds across all operating systems. -- [#1115](https://github.com/modular/mojo/issues/1115) - cannot load +- [#1115](https://github.com/modular/max/issues/1115) - cannot load non-register passable type into SSA register. ## v0.4.0 for Mac (2023-10-19) @@ -6002,33 +6002,33 @@ the previous "read to EOF" behavior when size is negative. ### 🛠️ Fixed -- [#794](https://github.com/modular/mojo/issues/794) - Parser crash when +- [#794](https://github.com/modular/max/issues/794) - Parser crash when using the `in` operator. -- [#936](https://github.com/modular/mojo/issues/936) - The `Int` constructor +- [#936](https://github.com/modular/max/issues/936) - The `Int` constructor now accepts other `Int` instances. -- [#921](https://github.com/modular/mojo/issues/921) - Better error message +- [#921](https://github.com/modular/max/issues/921) - Better error message when running `mojo` on a module with no `main` function. -- [#556](https://github.com/modular/mojo/issues/556) - UInt64s are now +- [#556](https://github.com/modular/max/issues/556) - UInt64s are now printed correctly. -- [#804](https://github.com/modular/mojo/issues/804) - Emit error instead of +- [#804](https://github.com/modular/max/issues/804) - Emit error instead of crashing when passing variadic arguments of unsupported types. -- [#833](https://github.com/modular/mojo/issues/833) - Parser crash when +- [#833](https://github.com/modular/max/issues/833) - Parser crash when assigning module value. -- [#752](https://github.com/modular/mojo/issues/752) - Parser crash when +- [#752](https://github.com/modular/max/issues/752) - Parser crash when calling async def. -- [#711](https://github.com/modular/mojo/issues/711) - The overload resolution +- [#711](https://github.com/modular/max/issues/711) - The overload resolution logic now correctly prioritizes instance methods over static methods (if candidates are an equally good match otherwise), and no longer crashed if a static method has a `Self` type as its first argument. -- [#859](https://github.com/modular/mojo/issues/859) - Fix confusing error and +- [#859](https://github.com/modular/max/issues/859) - Fix confusing error and documentation of the `rebind` builtin. -- [#753](https://github.com/modular/mojo/issues/753) - Direct use of LLVM +- [#753](https://github.com/modular/max/issues/753) - Direct use of LLVM dialect produces strange errors in the compiler. -- [#926](https://github.com/modular/mojo/issues/926) - Fixes an issue that +- [#926](https://github.com/modular/max/issues/926) - Fixes an issue that occurred when a function with a return type of `StringRef` raised an error. When the function raised an error, it incorrectly returned the string value of that error. -- [#536](https://github.com/modular/mojo/issues/536) - Report More information +- [#536](https://github.com/modular/max/issues/536) - Report More information on python exception. ## v0.3.1 (2023-09-28) @@ -6039,15 +6039,15 @@ installing the previous versions of the SDK, this release may be for you. ### 🛠️ Fixed -- [#538](https://github.com/modular/mojo/issues/538) - Installation hangs +- [#538](https://github.com/modular/max/issues/538) - Installation hangs during the testing phase. This issue occurs on machines with a low number of CPU cores, such as free AWS EC2 instances and GitHub Codespaces. -- [#590](https://github.com/modular/mojo/issues/590) - Installation fails +- [#590](https://github.com/modular/max/issues/590) - Installation fails with a “failed to run python” message. -- [#672](https://github.com/modular/mojo/issues/672) - Language server hangs +- [#672](https://github.com/modular/max/issues/672) - Language server hangs on code completion. Related to #538, this occurs on machines with a low number of CPU cores. -- [#913](https://github.com/modular/mojo/issues/913) - In the REPL and Jupyter +- [#913](https://github.com/modular/max/issues/913) - In the REPL and Jupyter notebooks, inline comments were being parsed incorrectly. ## v0.3.0 (2023-09-21) @@ -6149,7 +6149,7 @@ Code](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vsco - The Mojo Language Server now supports top-level code completions, enabling completion when typing a reference to a variable, type, etc. This resolves - [#679](https://github.com/modular/mojo/issues/679). + [#679](https://github.com/modular/max/issues/679). - The Mojo REPL now colorizes the resultant variables to help distinguish input expressions from the output variables. @@ -6188,19 +6188,19 @@ Code](https://marketplace.visualstudio.com/items?itemName=modular-mojotools.vsco ### 🛠️ Fixed -- [#503](https://github.com/modular/mojo/issues/503) - Improve error message +- [#503](https://github.com/modular/max/issues/503) - Improve error message for failure lowering `kgen.param.constant`. -- [#554](https://github.com/modular/mojo/issues/554) - Alias of static tuple +- [#554](https://github.com/modular/max/issues/554) - Alias of static tuple fails to expand. -- [#500](https://github.com/modular/mojo/issues/500) - Call expansion failed +- [#500](https://github.com/modular/max/issues/500) - Call expansion failed due to verifier error. -- [#422](https://github.com/modular/mojo/issues/422) - Incorrect comment +- [#422](https://github.com/modular/max/issues/422) - Incorrect comment detection in multiline strings. -- [#729](https://github.com/modular/mojo/issues/740) - Improve messaging on +- [#729](https://github.com/modular/max/issues/740) - Improve messaging on how to exit the REPL. -- [#756](https://github.com/modular/mojo/issues/756) - Fix initialization +- [#756](https://github.com/modular/max/issues/756) - Fix initialization errors of the VS Code extension. -- [#575](https://github.com/modular/mojo/issues/575) - Build LLDB/REPL with +- [#575](https://github.com/modular/max/issues/575) - Build LLDB/REPL with libedit for a nicer editing experience in the terminal. ## v0.2.1 (2023-09-07) @@ -6263,17 +6263,17 @@ All earlier releases were considered version 0.1. been changed to enable type inference. Now it's possible to write `rotate_right[shift_val](simd_val)` and have the `dtype` and `simd_width` inferred from the argument. This addresses - [Issue #528](https://github.com/modular/mojo/issues/528). + [Issue #528](https://github.com/modular/max/issues/528). ### 🛠️ Fixed - Fixed a bug causing the parser to crash when the `with` statement was written without a colon. - This addresses [Issue #529](https://github.com/modular/mojo/issues/529). + This addresses [Issue #529](https://github.com/modular/max/issues/529). - Incorrect imports no longer crash when there are other errors at the top level of a module. This fixes [Issue - #531](https://github.com/modular/mojo/issues/531). + #531](https://github.com/modular/max/issues/531). ## August 2023 @@ -6348,15 +6348,15 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed - Fixed issues with print formatting for `DType.uint16` and `DType.int16`. -- [Issue #499](https://github.com/modular/mojo/issues/499) - Two new +- [Issue #499](https://github.com/modular/max/issues/499) - Two new `rotate_right` and `rotate_left` functions have been added to the SIMD module. -- [Issue #429](https://github.com/modular/mojo/issues/429) - You can now +- [Issue #429](https://github.com/modular/max/issues/429) - You can now construct a `Bool` from a `SIMD` type whose element-type is `DType.bool`. -- [Issue #350](https://github.com/modular/mojo/issues/350) - Confusing Matrix +- [Issue #350](https://github.com/modular/max/issues/350) - Confusing Matrix implementation -- [Issue #349](https://github.com/modular/mojo/issues/349) - Missing load_tr +- [Issue #349](https://github.com/modular/max/issues/349) - Missing load_tr in struct Matrix -- [Issue #501](https://github.com/modular/mojo/issues/501) - Missing syntax +- [Issue #501](https://github.com/modular/max/issues/501) - Missing syntax error messages in Python expressions. ### 2023-08-09 @@ -6420,7 +6420,7 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #53](https://github.com/modular/mojo/issues/53) - `Int` now +- [Issue #53](https://github.com/modular/max/issues/53) - `Int` now implements true division with the `/` operator. Similar to Python, this returns a 64-bit floating point number. The corresponding in-place operator, `/=`, has the same semantics as `//=`. @@ -6460,10 +6460,10 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #437](https://github.com/modular/mojo/issues/437) - Range can now +- [Issue #437](https://github.com/modular/max/issues/437) - Range can now be instantiated with a PythonObject. -- [Issue #288](https://github.com/modular/mojo/issues/288) - Python strings +- [Issue #288](https://github.com/modular/max/issues/288) - Python strings can now be safely copied. ### 2023-07-20 @@ -6472,7 +6472,7 @@ All earlier releases were considered version 0.1. - Mojo now includes a `Limits` module, which contains functions to get the max and min values representable by a type, as requested in [Issue - #51](https://github.com/modular/mojo/issues/51). The following functions + #51](https://github.com/modular/max/issues/51). The following functions moved from `Math` to `Limits`: `inf()`, `neginf()`, `isinf()`, `isfinite()`. - Mojo decorators are now distinguished between "signature" and "body" @@ -6539,14 +6539,14 @@ All earlier releases were considered version 0.1. - Reverted the feature from 2023-02-13 that allowed unqualified struct members. Use the `Self` keyword to conveniently access struct members with bound parameters instead. This was required to fix - [Issue #260](https://github.com/modular/mojo/issues/260). + [Issue #260](https://github.com/modular/max/issues/260). - Updated the RayTracing notebook: added step 5 to create specular lighting for more realistic images and step 6 to add a background image. #### 🛠️ Fixed -- [Issue #260](https://github.com/modular/mojo/issues/260) - Definitions +- [Issue #260](https://github.com/modular/max/issues/260) - Definitions inside structs no longer shadow definitions outside of struct definitions. ### 2023-07-12 @@ -6583,7 +6583,7 @@ All earlier releases were considered version 0.1. - The walrus operator now works in if/while statements without parentheses, e.g. `if x := function():`. -- [Issue #428](https://github.com/modular/mojo/issues/428) - The +- [Issue #428](https://github.com/modular/max/issues/428) - The `FloatLiteral` and `SIMD` types now support conversion to `Int` via the `to_int` or `__int__` method calls. The behavior matches that of Python, which rounds towards zero. @@ -6613,21 +6613,21 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #253](https://github.com/modular/mojo/issues/253) - Issue +- [Issue #253](https://github.com/modular/max/issues/253) - Issue when accessing a struct member alias without providing parameters. -- [Issue #404](https://github.com/modular/mojo/issues/404) - The docs now use +- [Issue #404](https://github.com/modular/max/issues/404) - The docs now use `snake_case` for variable names, which more closely conforms to Python's style. -- [Issue #379](https://github.com/modular/mojo/issues/379) - Tuple +- [Issue #379](https://github.com/modular/max/issues/379) - Tuple limitations have been addressed and multiple return values are now supported, even without parentheses. -- [Issue #347](https://github.com/modular/mojo/issues/347) - Tuples no longer +- [Issue #347](https://github.com/modular/max/issues/347) - Tuples no longer require parentheses. -- [Issue #320](https://github.com/modular/mojo/issues/320) - Python objects +- [Issue #320](https://github.com/modular/max/issues/320) - Python objects are now traversable via `for` loops. ## June 2023 @@ -6653,18 +6653,18 @@ All earlier releases were considered version 0.1. #### 🛠️ Fixed -- [Issue #229](https://github.com/modular/mojo/issues/229) - Issue when +- [Issue #229](https://github.com/modular/max/issues/229) - Issue when throwing an exception from `__init__` before all fields are initialized. -- [Issue #74](https://github.com/modular/mojo/issues/74) - Struct +- [Issue #74](https://github.com/modular/max/issues/74) - Struct definition with recursive reference crashes. -- [Issue #285](https://github.com/modular/mojo/issues/285) - The +- [Issue #285](https://github.com/modular/max/issues/285) - The [`TargetInfo`](/mojo/stdlib/sys/info) module now includes `is_little_endian()` and `is_big_endian()` to check if the target host uses either little or big endian. -- [Issue #254](https://github.com/modular/mojo/issues/254) - Parameter name +- [Issue #254](https://github.com/modular/max/issues/254) - Parameter name shadowing in nested scopes is now handled correctly. ### 2023-06-21 @@ -6721,14 +6721,14 @@ only in declared parameter names, e.g. the following now works correctly: fn foobar[w: Int, S: DType]() -> SIMD[S, w]: ... ``` -- [Issue #219](https://github.com/modular/mojo/issues/219) - Issue when +- [Issue #219](https://github.com/modular/max/issues/219) - Issue when redefining a function and a struct defined in the same cell. -- [Issue #355](https://github.com/modular/mojo/issues/355) - The loop order +- [Issue #355](https://github.com/modular/max/issues/355) - The loop order in the Matmul notebook for Python and naive mojo have been reordered for consistency. The loop order now follows (M, K, N) ordering. -- [Issue #309](https://github.com/modular/mojo/issues/309) - Use snake case +- [Issue #309](https://github.com/modular/max/issues/309) - Use snake case naming within the testing package and move the asserts out of the TestSuite struct. @@ -6750,11 +6750,11 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #354](https://github.com/modular/mojo/issues/354) - Returning a tuple +- [Issue #354](https://github.com/modular/max/issues/354) - Returning a tuple doesn't work even with parens. -- [Issue #365](https://github.com/modular/mojo/issues/365) - Copy-paste error +- [Issue #365](https://github.com/modular/max/issues/365) - Copy-paste error in `FloatLiteral` docs. -- [Issue #357](https://github.com/modular/mojo/issues/357) - Crash when +- [Issue #357](https://github.com/modular/max/issues/357) - Crash when missing input parameter to variadic parameter struct member function. ### 2023-06-07 @@ -6771,7 +6771,7 @@ only in declared parameter names, e.g. the following now works correctly: - Mojo Playground no longer includes the following Python packages (due to size, compute costs, and - [environment complications](https://github.com/modular/mojo/issues/300)): + [environment complications](https://github.com/modular/max/issues/300)): `torch`, `tensorflow`, `keras`, `transformers`. #### 🦋 Changed @@ -6779,19 +6779,19 @@ only in declared parameter names, e.g. the following now works correctly: - The data types and scalar names now conform to the naming convention used by numpy. So we use `Int32` instead of `SI32`, similarly using `Float32` instead of `F32`. Closes - [Issue #152](https://github.com/modular/mojo/issues/152). + [Issue #152](https://github.com/modular/max/issues/152). #### 🛠️ Fixed -- [Issue #287](https://github.com/modular/mojo/issues/287) - computed +- [Issue #287](https://github.com/modular/max/issues/287) - computed lvalues don't handle raising functions correctly -- [Issue #318](https://github.com/modular/mojo/issues/318) - Large integers +- [Issue #318](https://github.com/modular/max/issues/318) - Large integers are not being printed correctly -- [Issue #326](https://github.com/modular/mojo/issues/326) - Float modulo +- [Issue #326](https://github.com/modular/max/issues/326) - Float modulo operator is not working as expected -- [Issue #282](https://github.com/modular/mojo/issues/282) - Default arguments +- [Issue #282](https://github.com/modular/max/issues/282) - Default arguments are not working as expected -- [Issue #271](https://github.com/modular/mojo/issues/271) - Confusing error +- [Issue #271](https://github.com/modular/max/issues/271) - Confusing error message when converting between function types with different result semantics ## May 2023 @@ -6801,7 +6801,7 @@ only in declared parameter names, e.g. the following now works correctly: #### ⭐️ New - Mojo Playground now includes the following Python packages (in response to - [popular demand](https://github.com/modular/mojo/discussions/173)): + [popular demand](https://github.com/modular/max/discussions/173)): `torch`, `tensorflow`, `polars`, `opencv-python`, `keras`, `Pillow`, `plotly`, `seaborn`, `sympy`, `transformers`. @@ -6865,9 +6865,9 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #231](https://github.com/modular/mojo/issues/231) - Unexpected error +- [Issue #231](https://github.com/modular/max/issues/231) - Unexpected error when a Python expression raises an exception -- [Issue #119](https://github.com/modular/mojo/issues/119) - The REPL fails +- [Issue #119](https://github.com/modular/max/issues/119) - The REPL fails when a python variable is redefined ### 2023-05-24 @@ -6892,39 +6892,39 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #204](https://github.com/modular/mojo/issues/204) - Mojo REPL +- [Issue #204](https://github.com/modular/max/issues/204) - Mojo REPL crash when returning a String at compile-time -- [Issue #143](https://github.com/modular/mojo/issues/143) - synthesized +- [Issue #143](https://github.com/modular/max/issues/143) - synthesized init in `@register_passable` type doesn't get correct convention. -- [Issue #201](https://github.com/modular/mojo/issues/201) - String literal +- [Issue #201](https://github.com/modular/max/issues/201) - String literal concatenation is too eager. -- [Issue #209](https://github.com/modular/mojo/issues/209) - [QoI] Terrible +- [Issue #209](https://github.com/modular/max/issues/209) - [QoI] Terrible error message trying to convert a type to itself. -- [Issue #32](https://github.com/modular/mojo/issues/32) - Include struct +- [Issue #32](https://github.com/modular/max/issues/32) - Include struct fields in docgen -- [Issue #50](https://github.com/modular/mojo/issues/50) - Int to string +- [Issue #50](https://github.com/modular/max/issues/50) - Int to string conversion crashes due to buffer overflow -- [Issue #132](https://github.com/modular/mojo/issues/132) - PythonObject +- [Issue #132](https://github.com/modular/max/issues/132) - PythonObject `to_int` method has a misleading name -- [Issue #189](https://github.com/modular/mojo/issues/189) - PythonObject bool +- [Issue #189](https://github.com/modular/max/issues/189) - PythonObject bool conversion is incorrect -- [Issue #65](https://github.com/modular/mojo/issues/65) - Add SIMD +- [Issue #65](https://github.com/modular/max/issues/65) - Add SIMD constructor from Bool -- [Issue #153](https://github.com/modular/mojo/issues/153) - Meaning of +- [Issue #153](https://github.com/modular/max/issues/153) - Meaning of `Time.now` function result is unclear -- [Issue #165](https://github.com/modular/mojo/issues/165) - Type in +- [Issue #165](https://github.com/modular/max/issues/165) - Type in `Pointer.free` documentation -- [Issue #210](https://github.com/modular/mojo/issues/210) - Parameter results +- [Issue #210](https://github.com/modular/max/issues/210) - Parameter results cannot be declared outside top-level in function -- [Issue #214](https://github.com/modular/mojo/issues/214) - Pointer offset +- [Issue #214](https://github.com/modular/max/issues/214) - Pointer offset calculations at compile-time are incorrect -- [Issue #115](https://github.com/modular/mojo/issues/115) - Float printing +- [Issue #115](https://github.com/modular/max/issues/115) - Float printing does not include the right number of digits -- [Issue #202](https://github.com/modular/mojo/issues/202) - +- [Issue #202](https://github.com/modular/max/issues/202) - `kgen.unreachable` inside nested functions is illegal -- [Issue #235](https://github.com/modular/mojo/issues/235) - Crash when +- [Issue #235](https://github.com/modular/max/issues/235) - Crash when register passable struct field is not register passable -- [Issue #237](https://github.com/modular/mojo/issues/237) - Parameter +- [Issue #237](https://github.com/modular/max/issues/237) - Parameter closure sharp edges are not documented ### 2023-05-16 @@ -6939,16 +6939,16 @@ only in declared parameter names, e.g. the following now works correctly: #### 🛠️ Fixed -- [Issue #98](https://github.com/modular/mojo/issues/98): +- [Issue #98](https://github.com/modular/max/issues/98): Incorrect error with lifetime tracking in loop. -- [Issue #49](https://github.com/modular/mojo/issues/49): Type inference +- [Issue #49](https://github.com/modular/max/issues/49): Type inference issue (?) in 'ternary assignment' operation (FloatLiteral vs. 'SIMD[f32, 1]'). -- [Issue #48](https://github.com/modular/mojo/issues/48): +- [Issue #48](https://github.com/modular/max/issues/48): and/or don't work with memory-only types. -- [Issue #11](https://github.com/modular/mojo/issues/11): `setitem` Support +- [Issue #11](https://github.com/modular/max/issues/11): `setitem` Support for `PythonObject`. ### 2023-05-11 @@ -6966,7 +6966,7 @@ only in declared parameter names, e.g. the following now works correctly: - The "byref" syntax with the `&` sigil has changed to use an `inout` keyword to be more similar to the `borrowed` and `owned` syntax in arguments. - Please see [Issue #7](https://github.com/modular/mojo/issues/7) for more + Please see [Issue #7](https://github.com/modular/max/issues/7) for more information. - Optimized the Matrix multiplication implementation in the notebook. @@ -6983,10 +6983,10 @@ from "consume" to "transfer." - Fixed missing overloads for `Testing.assertEqual` so that they work on `Integer` and `String` values. -- [Issue #6](https://github.com/modular/mojo/issues/6): +- [Issue #6](https://github.com/modular/max/issues/6): Playground stops evaluating cells when a simple generic is defined. -- [Issue #18](https://github.com/modular/mojo/issues/18): +- [Issue #18](https://github.com/modular/max/issues/18): Memory leak in Python interoperability was removed. ### 2023-05-02 diff --git a/docs/changelog.md b/mojo/docs/changelog.md similarity index 51% rename from docs/changelog.md rename to mojo/docs/changelog.md index 14364179fe..750d44f331 100644 --- a/docs/changelog.md +++ b/mojo/docs/changelog.md @@ -21,8 +21,8 @@ what we publish. ### Language changes - The Mojo comptime interpreter can now handle many more LLVM intrinsics, - including ones that return floating point values. This allows functions - like `round` to be constant folded when used in a comptime context. + including ones that return floating point values. This allows functions + like `round` to be constant folded when used in a comptime context. ### Standard library changes @@ -61,7 +61,51 @@ what we publish. - Added a `StringSlice.is_codepoint_boundary()` method for querying if a given byte index is a boundary between encoded UTF-8 codepoints. -- Added an iterator to `LinkedList` ([PR #4005](https://github.com/modular/mojo/pull/4005)) +- `StringSlice.__getitem__(Slice)` will now raise an error if the provided slice + start and end positions do not fall on a valid codepoint boundary. This + prevents construction of malformed `StringSlice` values, which could lead to + memory unsafety or undefined behavior. For example, given a string containing + multi-byte encoded data, like: + + ```mojo + var str_slice = "Hi👋!" + ``` + + and whose in-memory and decoded data looks like: + + ```text + ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Hi👋! ┃ String + ┣━━┳━━━┳━━━━━━━━━━━━━━━┳━━┫ + ┃H ┃ i ┃ 👋 ┃! ┃ Codepoint Characters + ┣━━╋━━━╋━━━━━━━━━━━━━━━╋━━┫ + ┃72┃105┃ 128075 ┃33┃ Codepoints + ┣━━╋━━━╋━━━┳━━━┳━━━┳━━━╋━━┫ + ┃72┃105┃240┃159┃145┃139┃33┃ Bytes + ┗━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┛ + 0 1 2 3 4 5 6 + ``` + + attempting to slice bytes `[3-5)` with `str_slice[3:5]` would previously + erroenously produce a malformed `StringSlice` as output that did not correctly + decode to anything: + + ```text + ┏━━━━━━━┓ + ┃ ??? ┃ + ┣━━━━━━━┫ + ┃ ??? ┃ + ┣━━━━━━━┫ + ┃ ??? ┃ + ┣━━━┳━━━┫ + ┃159┃145┃ + ┗━━━┻━━━┛ + ``` + + The same statement will now raise an error informing the user their indices + are invalid. + +- Added an iterator to `LinkedList` ([PR #4005](https://github.com/modular/max/pull/4005)) - `LinkedList.__iter__()` to create a forward iterator. - `LinkedList.__reversed__()` for a backward iterator. @@ -122,6 +166,21 @@ ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) ``` +- The methods on `DeviceContext`: + + - enqueue_copy_to_device + - enqueue_copy_from_device + - enqueue_copy_device_to_device + + Have been combined to single overloaded `enqueue_copy` method, and: + + - copy_to_device_sync + - copy_from_device_sync + - copy_device_to_device_sync + + Have been combined into an overloaded `copy` method, so you don't have + to figure out which method to call based on the arguments you're passing. + - The `shuffle` module has been rename to `warp` to better reflect its purpose. To uses now you will have to do @@ -139,11 +198,57 @@ ctx.enqueue_function(compiled_func, grid_dim=1, block_dim=1) #### Mojo Compiler -Mojo compiler now warns about parameter for with large loop unrolling factor -(>1024 by default) which can lead to long compilation time and large generated -code size. Set `--loop-unrolling-warn-threshold` to change default value to -a different threshold or to `0` to disable the warning. +- Mojo compiler now warns about parameter for with large loop unrolling factor + (>1024 by default) which can lead to long compilation time and large generated + code size. Set `--loop-unrolling-warn-threshold` to change default value to + a different threshold or to `0` to disable the warning. + +- The Mojo compiler now only has one comptime interpreter. It had two + previously: one to handle a few cases that were important for dependent types + (but which also had many limitations) in the parser, and the primary one that + ran at "instantiation" time which is fully general. This was confusing and + caused a wide range of bugs. We've now removed the special case parse-time + interpreter, replacing it with a more general solution for dependent types. + This change should be invisible to most users, but should resolve a number of + long-standing bugs and significantly simplifies the compiler implementation, + allowing us to move faster. ### ❌ Removed +- Direct access to `List.size` has been removed. Use the public API instead. + + Examples: + + Extending a List: + + ```mojo + base_data = List[Byte](1, 2, 3) + + data_list = List[Byte](4, 5, 6) + ext_data_list = base_data.copy() + ext_data_list.extend(data_list) # [1, 2, 3, 4, 5, 6] + + data_span = Span(List[Byte](4, 5, 6)) + ext_data_span = base_data.copy() + ext_data_span.extend(data_span) # [1, 2, 3, 4, 5, 6] + + data_vec = SIMD[DType.uint8, 4](4, 5, 6, 7) + ext_data_vec_full = base_data.copy() + ext_data_vec_full.extend(data_vec) # [1, 2, 3, 4, 5, 6, 7] + + ext_data_vec_partial = base_data.copy() + ext_data_vec_partial.extend(data_vec, count=3) # [1, 2, 3, 4, 5, 6] + ``` + + Slicing and extending a list efficiently: + + ```mojo + base_data = List[Byte](1, 2, 3, 4, 5, 6) + n4_n5 = Span(base_data)[3:5] + extra_data = Span(List[Byte](8, 10)) + end_result = List[Byte](capacity=len(n4_n5) + len(extra_data)) + end_result.extend(n4_n5) + end_result.extend(extra_data) # [4, 5, 8, 10] + ``` + ### 🛠️ Fixed diff --git a/docs/faq.md b/mojo/docs/faq.md similarity index 99% rename from docs/faq.md rename to mojo/docs/faq.md index 2061c83564..93da03c653 100644 --- a/docs/faq.md +++ b/mojo/docs/faq.md @@ -148,7 +148,7 @@ at Modular to develop AI algorithms, but you can use it for other things like HPC, data transformations, writing pre/post processing operations, and much more. For examples of how Mojo can be used for other general programming tasks, see our [Mojo -examples](https://github.com/modular/mojo/tree/main/examples). +examples](https://github.com/modular/max/tree/main/examples/mojo). ### Is Mojo interpreted or compiled? @@ -285,7 +285,7 @@ and does not require login. using buttons in the Playground toolbar. - There might be some bugs. Please [report issues and feedback on - GitHub](https://github.com/modular/mojo/issues/new/choose). + GitHub](https://github.com/modular/max/issues/new/choose). ### What are the license terms for the SDK? diff --git a/docs/images/dynamic-vector-capacity.png b/mojo/docs/images/dynamic-vector-capacity.png similarity index 100% rename from docs/images/dynamic-vector-capacity.png rename to mojo/docs/images/dynamic-vector-capacity.png diff --git a/docs/images/let-to-var.png b/mojo/docs/images/let-to-var.png similarity index 100% rename from docs/images/let-to-var.png rename to mojo/docs/images/let-to-var.png diff --git a/docs/images/vectorize-fix.png b/mojo/docs/images/vectorize-fix.png similarity index 100% rename from docs/images/vectorize-fix.png rename to mojo/docs/images/vectorize-fix.png diff --git a/docs/lib.mdx b/mojo/docs/lib.mdx similarity index 100% rename from docs/lib.mdx rename to mojo/docs/lib.mdx diff --git a/docs/manual/basics.mdx b/mojo/docs/manual/basics.mdx similarity index 96% rename from docs/manual/basics.mdx rename to mojo/docs/manual/basics.mdx index b62e7cbf8d..ea9c44180c 100644 --- a/docs/manual/basics.mdx +++ b/mojo/docs/manual/basics.mdx @@ -255,7 +255,7 @@ struct MyPair: self.first = first self.second = second - fn __copyinit__(out self, existing other): + fn __copyinit__(out self, existing: Self): self.first = existing.first self.second = existing.second @@ -393,7 +393,7 @@ This function has one parameter of type `Int` and one argument of type argument: ```mojo -defining call_repeat(): +def call_repeat(): repeat[3]("Hello") # Prints "Hello" 3 times ``` @@ -416,8 +416,7 @@ For more detail on parameters, see the section on ## Python integration -Mojo supports the ability to import -Python modules as-is, so you can leverage existing Python code right away. +Mojo supports the ability to import Python modules as-is, so you can leverage existing Python code right away. For example, here's how you can import and use NumPy: @@ -444,19 +443,22 @@ Hopefully this page has given you enough information to start experimenting with Mojo, but this is only touching the surface of what's available in Mojo. If you're in the mood to read more, continue through each page of this -Mojo Manual—the next page from -here is [Functions](/mojo/manual/functions). +Mojo Manual—the next page from here is [Functions](/mojo/manual/functions). Otherwise, here are some other resources to check out: * See [Get started with Mojo](/mojo/manual/get-started) for a hands-on tutorial that will get you up and running with Mojo. -* If you want to experiment with some code, clone [the Mojo - repo](https://github.com/modular/mojo/) to try our code examples: +* If you want to experiment with some code, clone [our GitHub + repo](https://github.com/modular/max/) to try our code examples: ```sh - git clone https://github.com/modular/mojo.git + git clone https://github.com/modular/max.git + ``` + + ```sh + cd max/examples/mojo ``` * To see all the available Mojo APIs, check out the [Mojo standard library diff --git a/docs/manual/control-flow.mdx b/mojo/docs/manual/control-flow.mdx similarity index 100% rename from docs/manual/control-flow.mdx rename to mojo/docs/manual/control-flow.mdx diff --git a/docs/manual/decorators/always-inline.md b/mojo/docs/manual/decorators/always-inline.md similarity index 100% rename from docs/manual/decorators/always-inline.md rename to mojo/docs/manual/decorators/always-inline.md diff --git a/docs/manual/decorators/copy-capture.md b/mojo/docs/manual/decorators/copy-capture.md similarity index 100% rename from docs/manual/decorators/copy-capture.md rename to mojo/docs/manual/decorators/copy-capture.md diff --git a/docs/manual/decorators/implicit.md b/mojo/docs/manual/decorators/implicit.md similarity index 100% rename from docs/manual/decorators/implicit.md rename to mojo/docs/manual/decorators/implicit.md diff --git a/docs/manual/decorators/index.mdx b/mojo/docs/manual/decorators/index.mdx similarity index 100% rename from docs/manual/decorators/index.mdx rename to mojo/docs/manual/decorators/index.mdx diff --git a/docs/manual/decorators/nonmaterializable.md b/mojo/docs/manual/decorators/nonmaterializable.md similarity index 100% rename from docs/manual/decorators/nonmaterializable.md rename to mojo/docs/manual/decorators/nonmaterializable.md diff --git a/docs/manual/decorators/parameter.md b/mojo/docs/manual/decorators/parameter.md similarity index 100% rename from docs/manual/decorators/parameter.md rename to mojo/docs/manual/decorators/parameter.md diff --git a/docs/manual/decorators/register-passable.md b/mojo/docs/manual/decorators/register-passable.md similarity index 100% rename from docs/manual/decorators/register-passable.md rename to mojo/docs/manual/decorators/register-passable.md diff --git a/docs/manual/decorators/staticmethod.md b/mojo/docs/manual/decorators/staticmethod.md similarity index 100% rename from docs/manual/decorators/staticmethod.md rename to mojo/docs/manual/decorators/staticmethod.md diff --git a/docs/manual/decorators/value.md b/mojo/docs/manual/decorators/value.md similarity index 100% rename from docs/manual/decorators/value.md rename to mojo/docs/manual/decorators/value.md diff --git a/docs/manual/errors.mdx b/mojo/docs/manual/errors.mdx similarity index 100% rename from docs/manual/errors.mdx rename to mojo/docs/manual/errors.mdx diff --git a/docs/manual/functions.mdx b/mojo/docs/manual/functions.mdx similarity index 100% rename from docs/manual/functions.mdx rename to mojo/docs/manual/functions.mdx diff --git a/docs/manual/get-started.mdx b/mojo/docs/manual/get-started.mdx similarity index 99% rename from docs/manual/get-started.mdx rename to mojo/docs/manual/get-started.mdx index 799ebbc78d..2c7ac86f54 100644 --- a/docs/manual/get-started.mdx +++ b/mojo/docs/manual/get-started.mdx @@ -2,7 +2,7 @@ title: "Get started with Mojo" sidebar_label: "Tutorial: Get started with Mojo" description: "Install Mojo and learn the language basics by building a complete Mojo program" -github_url: https://github.com/modular/mojo/tree/main/examples/life +github_url: https://github.com/modular/max/tree/main/examples/mojo/life image: /images/artwork/mojo-get-started.jpg --- @@ -37,7 +37,7 @@ This tutorial might be a little long because there's a lot to learn, but we tried to keep the explanations simple, and we included links along the way for you to go learn more about each topic. If you just want to see the finished code, you can [get it on -GitHub](https://github.com/modular/mojo/tree/main/examples/life). +GitHub](https://github.com/modular/max/tree/main/examples/mojo/life). System requirements: diff --git a/docs/manual/images/game-of-life-screen.png b/mojo/docs/manual/images/game-of-life-screen.png similarity index 100% rename from docs/manual/images/game-of-life-screen.png rename to mojo/docs/manual/images/game-of-life-screen.png diff --git a/docs/manual/images/mojo-vscode.png b/mojo/docs/manual/images/mojo-vscode.png similarity index 100% rename from docs/manual/images/mojo-vscode.png rename to mojo/docs/manual/images/mojo-vscode.png diff --git a/docs/manual/images/owned-pointer-diagram-dark.png b/mojo/docs/manual/images/owned-pointer-diagram-dark.png similarity index 100% rename from docs/manual/images/owned-pointer-diagram-dark.png rename to mojo/docs/manual/images/owned-pointer-diagram-dark.png diff --git a/docs/manual/images/owned-pointer-diagram.png b/mojo/docs/manual/images/owned-pointer-diagram.png similarity index 100% rename from docs/manual/images/owned-pointer-diagram.png rename to mojo/docs/manual/images/owned-pointer-diagram.png diff --git a/docs/manual/images/pointer-diagram-dark.png b/mojo/docs/manual/images/pointer-diagram-dark.png similarity index 100% rename from docs/manual/images/pointer-diagram-dark.png rename to mojo/docs/manual/images/pointer-diagram-dark.png diff --git a/docs/manual/images/pointer-diagram.png b/mojo/docs/manual/images/pointer-diagram.png similarity index 100% rename from docs/manual/images/pointer-diagram.png rename to mojo/docs/manual/images/pointer-diagram.png diff --git a/docs/manual/images/pointer-lifecycle-dark.png b/mojo/docs/manual/images/pointer-lifecycle-dark.png similarity index 100% rename from docs/manual/images/pointer-lifecycle-dark.png rename to mojo/docs/manual/images/pointer-lifecycle-dark.png diff --git a/docs/manual/images/pointer-lifecycle.png b/mojo/docs/manual/images/pointer-lifecycle.png similarity index 100% rename from docs/manual/images/pointer-lifecycle.png rename to mojo/docs/manual/images/pointer-lifecycle.png diff --git a/docs/manual/images/pointer-offset-dark.png b/mojo/docs/manual/images/pointer-offset-dark.png similarity index 100% rename from docs/manual/images/pointer-offset-dark.png rename to mojo/docs/manual/images/pointer-offset-dark.png diff --git a/docs/manual/images/pointer-offset.png b/mojo/docs/manual/images/pointer-offset.png similarity index 100% rename from docs/manual/images/pointer-offset.png rename to mojo/docs/manual/images/pointer-offset.png diff --git a/docs/manual/images/strided-load-storage-dark.png b/mojo/docs/manual/images/strided-load-storage-dark.png similarity index 100% rename from docs/manual/images/strided-load-storage-dark.png rename to mojo/docs/manual/images/strided-load-storage-dark.png diff --git a/docs/manual/images/strided-load-storage.png b/mojo/docs/manual/images/strided-load-storage.png similarity index 100% rename from docs/manual/images/strided-load-storage.png rename to mojo/docs/manual/images/strided-load-storage.png diff --git a/docs/manual/index.md b/mojo/docs/manual/index.md similarity index 100% rename from docs/manual/index.md rename to mojo/docs/manual/index.md diff --git a/docs/manual/lifecycle/death.mdx b/mojo/docs/manual/lifecycle/death.mdx similarity index 100% rename from docs/manual/lifecycle/death.mdx rename to mojo/docs/manual/lifecycle/death.mdx diff --git a/docs/manual/lifecycle/index.mdx b/mojo/docs/manual/lifecycle/index.mdx similarity index 100% rename from docs/manual/lifecycle/index.mdx rename to mojo/docs/manual/lifecycle/index.mdx diff --git a/docs/manual/lifecycle/life.mdx b/mojo/docs/manual/lifecycle/life.mdx similarity index 100% rename from docs/manual/lifecycle/life.mdx rename to mojo/docs/manual/lifecycle/life.mdx diff --git a/docs/manual/operators.mdx b/mojo/docs/manual/operators.mdx similarity index 99% rename from docs/manual/operators.mdx rename to mojo/docs/manual/operators.mdx index b3f9e8fd00..22a52dd56e 100644 --- a/docs/manual/operators.mdx +++ b/mojo/docs/manual/operators.mdx @@ -1,7 +1,7 @@ --- title: Operators, expressions, and dunder methods sidebar_label: Operators and expressions -github_url: https://github.com/modular/mojo/tree/main/examples/operators +github_url: https://github.com/modular/max/tree/main/examples/mojo/operators --- Mojo includes a variety of operators for manipulating values of different types. @@ -1071,8 +1071,8 @@ operations like printing complex values. We'll also allow mixing `Complex` and `Float64` values in arithmetic expressions to produce a `Complex` result. This example builds our `Complex` struct incrementally. You can also find the -[complete example in the public Mojo GitHub -repo](https://github.com/modular/mojo/tree/main/examples/operators). +[complete example in the public GitHub +repo](https://github.com/modular/max/tree/main/examples/mojo/operators). :::note diff --git a/docs/manual/packages.md b/mojo/docs/manual/packages.md similarity index 100% rename from docs/manual/packages.md rename to mojo/docs/manual/packages.md diff --git a/docs/manual/parameters/index.mdx b/mojo/docs/manual/parameters/index.mdx similarity index 99% rename from docs/manual/parameters/index.mdx rename to mojo/docs/manual/parameters/index.mdx index 22f588a94a..3c1b82c475 100644 --- a/docs/manual/parameters/index.mdx +++ b/mojo/docs/manual/parameters/index.mdx @@ -140,7 +140,7 @@ Mojo's support for generics is still early. You can write generic functions like this using traits and parameters. You can also write generic collections like `List` and `Dict`. If you're interested in learning how these types work, you can find the source code for the standard library collection types -[on GitHub](https://github.com/modular/mojo/blob/nightly/stdlib/src/collections/). +[on GitHub](https://github.com/modular/max/blob/main/mojo/stdlib/src/collections/). ## Parameterized structs diff --git a/docs/manual/pointers/index.mdx b/mojo/docs/manual/pointers/index.mdx similarity index 100% rename from docs/manual/pointers/index.mdx rename to mojo/docs/manual/pointers/index.mdx diff --git a/docs/manual/pointers/unsafe-pointers.mdx b/mojo/docs/manual/pointers/unsafe-pointers.mdx similarity index 100% rename from docs/manual/pointers/unsafe-pointers.mdx rename to mojo/docs/manual/pointers/unsafe-pointers.mdx diff --git a/docs/manual/python/index.mdx b/mojo/docs/manual/python/index.mdx similarity index 100% rename from docs/manual/python/index.mdx rename to mojo/docs/manual/python/index.mdx diff --git a/docs/manual/python/types.mdx b/mojo/docs/manual/python/types.mdx similarity index 100% rename from docs/manual/python/types.mdx rename to mojo/docs/manual/python/types.mdx diff --git a/docs/manual/structs.mdx b/mojo/docs/manual/structs.mdx similarity index 100% rename from docs/manual/structs.mdx rename to mojo/docs/manual/structs.mdx diff --git a/docs/manual/traits.mdx b/mojo/docs/manual/traits.mdx similarity index 100% rename from docs/manual/traits.mdx rename to mojo/docs/manual/traits.mdx diff --git a/docs/manual/types.mdx b/mojo/docs/manual/types.mdx similarity index 100% rename from docs/manual/types.mdx rename to mojo/docs/manual/types.mdx diff --git a/docs/manual/values/index.mdx b/mojo/docs/manual/values/index.mdx similarity index 100% rename from docs/manual/values/index.mdx rename to mojo/docs/manual/values/index.mdx diff --git a/docs/manual/values/lifetimes.mdx b/mojo/docs/manual/values/lifetimes.mdx similarity index 99% rename from docs/manual/values/lifetimes.mdx rename to mojo/docs/manual/values/lifetimes.mdx index bd96d45b95..5d9bb37c10 100644 --- a/docs/manual/values/lifetimes.mdx +++ b/mojo/docs/manual/values/lifetimes.mdx @@ -424,8 +424,8 @@ for i in range(len(nums)): ``` (You can find the code for the -`List` iterator in the [Mojo -repo](https://github.com/modular/mojo/blob/main/stdlib/src/collections/list.mojo#L63).) +`List` iterator in the [public +repo](https://github.com/modular/max/blob/main/mojo/stdlib/src/collections/list.mojo#L63).) #### Parametric mutability of return values diff --git a/docs/manual/values/ownership.mdx b/mojo/docs/manual/values/ownership.mdx similarity index 100% rename from docs/manual/values/ownership.mdx rename to mojo/docs/manual/values/ownership.mdx diff --git a/docs/manual/values/value-semantics.mdx b/mojo/docs/manual/values/value-semantics.mdx similarity index 100% rename from docs/manual/values/value-semantics.mdx rename to mojo/docs/manual/values/value-semantics.mdx diff --git a/docs/manual/variables.mdx b/mojo/docs/manual/variables.mdx similarity index 100% rename from docs/manual/variables.mdx rename to mojo/docs/manual/variables.mdx diff --git a/docs/roadmap.md b/mojo/docs/roadmap.md similarity index 99% rename from docs/roadmap.md rename to mojo/docs/roadmap.md index 05e5bf94da..754c0acdc7 100644 --- a/docs/roadmap.md +++ b/mojo/docs/roadmap.md @@ -29,7 +29,7 @@ In the near-term, we will **not** prioritize "general goodness" work such as: - Tackling broad Python ecosystem challenges like packaging. If you have encountered any bugs with current Mojo behavior, please -[submit an issue on GitHub](https://github.com/modular/mojo/issues). +[submit an issue on GitHub](https://github.com/modular/max/issues). If you have ideas about how to improve the core Mojo features, we prefer that you first look for similar topics or start a new conversation about it @@ -148,7 +148,7 @@ When we get here, we will discuss what the right default is: for example, is full Python hash-table dynamism the default? Or do we use a more efficient model by default (e.g. vtable-based dispatch and explicitly declared stored properties) and allow opt'ing into dynamism with a `@dynamic` decorator on the -class. More discussion is [in this proposal](https://github.com/modular/mojo/blob/main/proposals/mojo-and-dynamism.md). +class. More discussion is [in this proposal](https://github.com/modular/max/blob/main/mojo/proposals/mojo-and-dynamism.md). ## C/C++ Interop diff --git a/docs/tools/debugging.mdx b/mojo/docs/tools/debugging.mdx similarity index 99% rename from docs/tools/debugging.mdx rename to mojo/docs/tools/debugging.mdx index 2a761c6f88..50befddbed 100644 --- a/docs/tools/debugging.mdx +++ b/mojo/docs/tools/debugging.mdx @@ -24,9 +24,9 @@ in VS Code. There are several ways to start a debug session in VS Code. -To start debugging, you'll need to have a Mojo project to debug. There are -a number of examples ranging from simple to complex in the [Mojo repo on -GitHub](https://github.com/modular/mojo). +To start debugging, you'll need to have a Mojo project to debug. There are a +number of examples ranging from simple to complex in [our GitHub +repo](https://github.com/modular/max/tree/main/examples/mojo). :::note **VS Code veteran?** diff --git a/docs/tools/images/break-on-raise.png b/mojo/docs/tools/images/break-on-raise.png similarity index 100% rename from docs/tools/images/break-on-raise.png rename to mojo/docs/tools/images/break-on-raise.png diff --git a/docs/tools/images/breakpoint-hit-count.png b/mojo/docs/tools/images/breakpoint-hit-count.png similarity index 100% rename from docs/tools/images/breakpoint-hit-count.png rename to mojo/docs/tools/images/breakpoint-hit-count.png diff --git a/docs/tools/images/debug-toolbar.png b/mojo/docs/tools/images/debug-toolbar.png similarity index 100% rename from docs/tools/images/debug-toolbar.png rename to mojo/docs/tools/images/debug-toolbar.png diff --git a/docs/tools/images/debugger-call-stack-nested1.png b/mojo/docs/tools/images/debugger-call-stack-nested1.png similarity index 100% rename from docs/tools/images/debugger-call-stack-nested1.png rename to mojo/docs/tools/images/debugger-call-stack-nested1.png diff --git a/docs/tools/images/debugger-variables.png b/mojo/docs/tools/images/debugger-variables.png similarity index 100% rename from docs/tools/images/debugger-variables.png rename to mojo/docs/tools/images/debugger-variables.png diff --git a/docs/tools/images/launch-configuration-menu.png b/mojo/docs/tools/images/launch-configuration-menu.png similarity index 100% rename from docs/tools/images/launch-configuration-menu.png rename to mojo/docs/tools/images/launch-configuration-menu.png diff --git a/docs/tools/images/quick-run-or-debug-button-debug.png b/mojo/docs/tools/images/quick-run-or-debug-button-debug.png similarity index 100% rename from docs/tools/images/quick-run-or-debug-button-debug.png rename to mojo/docs/tools/images/quick-run-or-debug-button-debug.png diff --git a/docs/tools/images/quick-run-or-debug-button.png b/mojo/docs/tools/images/quick-run-or-debug-button.png similarity index 100% rename from docs/tools/images/quick-run-or-debug-button.png rename to mojo/docs/tools/images/quick-run-or-debug-button.png diff --git a/docs/tools/images/quick-run-or-debug-menu.png b/mojo/docs/tools/images/quick-run-or-debug-menu.png similarity index 100% rename from docs/tools/images/quick-run-or-debug-menu.png rename to mojo/docs/tools/images/quick-run-or-debug-menu.png diff --git a/docs/tools/images/run-and-debug-icon.png b/mojo/docs/tools/images/run-and-debug-icon.png similarity index 100% rename from docs/tools/images/run-and-debug-icon.png rename to mojo/docs/tools/images/run-and-debug-icon.png diff --git a/docs/tools/images/run-and-debug-view.png b/mojo/docs/tools/images/run-and-debug-view.png similarity index 100% rename from docs/tools/images/run-and-debug-view.png rename to mojo/docs/tools/images/run-and-debug-view.png diff --git a/docs/tools/images/run-start-view.png b/mojo/docs/tools/images/run-start-view.png similarity index 100% rename from docs/tools/images/run-start-view.png rename to mojo/docs/tools/images/run-start-view.png diff --git a/docs/tools/testing.mdx b/mojo/docs/tools/testing.mdx similarity index 97% rename from docs/tools/testing.mdx rename to mojo/docs/tools/testing.mdx index 34dc575ce1..8861c554fe 100644 --- a/docs/tools/testing.mdx +++ b/mojo/docs/tools/testing.mdx @@ -2,7 +2,7 @@ title: Testing sidebar_position: 2 description: Testing Mojo programs. -github_url: https://github.com/modular/mojo/tree/main/examples/testing +github_url: https://github.com/modular/max/tree/main/examples/mojo/testing --- Mojo includes a framework for developing and executing unit tests. The Mojo @@ -96,9 +96,8 @@ its error message. organize them into test files. - [The `mojo test` command](#the-mojo-test-command) describes how to execute and collect lists of tests. -- The public [GitHub repo](https://github.com/modular/mojo/tree/main) contains - an [example - project](https://github.com/modular/mojo/tree/main/examples/testing) to +- Our GitHub repo contains an [example + project](https://github.com/modular/max/tree/main/examples/mojo/testing) to demonstrate unit testing. Several of the examples shown later are based on this project. @@ -291,7 +290,7 @@ the following: If needed, you can optionally use the `-I` option one or more times to append additional paths to the list of directories searched to import Mojo modules and packages. Consider the [example testing -project](https://github.com/modular/mojo/tree/main/examples/testing) in +project](https://github.com/modular/max/tree/main/examples/mojo/testing) in GitHub, which has the following directory structure: ```output @@ -363,7 +362,7 @@ By including the `--collect-only` or `--co` option, you can use `mojo test` to discover and print a list of tests. Consider the [example testing -project](https://github.com/modular/mojo/tree/main/examples/testing) +project](https://github.com/modular/max/tree/main/examples/mojo/testing) directory structure shown in the [Running tests](#running-tests) section. The following command produces a list of all of the tests defined in the `test` directory hierarchy. @@ -434,7 +433,7 @@ output shown): You can also produce JSON output for test collection as well. Consider the [example testing -project](https://github.com/modular/mojo/tree/main/examples/testing) +project](https://github.com/modular/max/tree/main/examples/mojo/testing) directory structure shown in the [Running tests](#running-tests) section. The following command collects a list in JSON format of all of the tests defined in the `test` directory hierarchy: diff --git a/docs/why-mojo.md b/mojo/docs/why-mojo.md similarity index 100% rename from docs/why-mojo.md rename to mojo/docs/why-mojo.md diff --git a/magic.lock b/mojo/magic.lock similarity index 90% rename from magic.lock rename to mojo/magic.lock index 408e479333..d586b02bb2 100644 --- a/magic.lock +++ b/mojo/magic.lock @@ -24,11 +24,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda @@ -37,17 +37,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda @@ -59,7 +59,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda @@ -90,11 +90,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda @@ -103,17 +103,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda @@ -125,7 +125,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda @@ -166,11 +166,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lit-19.1.7-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda - - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda @@ -182,7 +182,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda @@ -424,6 +424,7 @@ packages: arch: x86_64 platform: linux license: GPL-3.0-only + license_family: GPL size: 671240 timestamp: 1740155456116 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda @@ -434,6 +435,7 @@ packages: arch: aarch64 platform: linux license: GPL-3.0-only + license_family: GPL size: 699058 timestamp: 1740155620594 - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda @@ -498,6 +500,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16859 timestamp: 1740087969120 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda @@ -516,6 +519,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16915 timestamp: 1740087911042 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda @@ -534,6 +538,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17123 timestamp: 1740088119350 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_he106b2a_openblas.conda @@ -549,6 +554,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16796 timestamp: 1740087984429 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda @@ -564,6 +570,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16824 timestamp: 1740087917500 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda @@ -579,6 +586,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17032 timestamp: 1740088127097 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda @@ -704,83 +712,83 @@ packages: license_family: MIT size: 39020 timestamp: 1636488587153 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda - sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 - md5: 3cb76c3f10d3bc7f1105b2fc9db984df +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgomp 14.2.0 h77fa898_1 - - libgcc-ng ==14.2.0=*_1 + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 848745 - timestamp: 1729027721139 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda - sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 - md5: 511b511c5445e324066c3377481bcab8 + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 depends: - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==14.2.0=*_1 - - libgomp 14.2.0 he277a41_1 + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 535243 - timestamp: 1729089435134 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda - sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 - md5: e39480b9ca41323497b05492a63bc35b + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 depends: - - libgcc 14.2.0 h77fa898_1 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54142 - timestamp: 1729027726517 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda - sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 - md5: 0694c249c61469f2c0f7e2990782af21 + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54104 - timestamp: 1729089444587 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda - sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 - md5: f1fd30127802683586f768875127a987 + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 depends: - - libgfortran5 14.2.0 hd5240d6_1 + - libgfortran5 14.2.0 hf1ad2bd_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 53997 - timestamp: 1729027752995 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda - sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b - md5: 0294b92d2f47a240bebb1e3336b495f1 + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 depends: - - libgfortran5 14.2.0 hb6113d0_1 + - libgfortran5 14.2.0 hb6113d0_2 constrains: - - libgfortran-ng ==14.2.0=*_1 + - libgfortran-ng ==14.2.0=*_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729089471124 + size: 53611 + timestamp: 1740241100147 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b md5: 4a55d9e169114b2b90d3ec4604cd7bbf @@ -792,10 +800,11 @@ packages: license_family: GPL size: 110233 timestamp: 1707330749033 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=14.2.0 constrains: - libgfortran 14.2.0 @@ -803,11 +812,11 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f depends: - libgcc >=14.2.0 constrains: @@ -816,8 +825,8 @@ packages: platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1102158 - timestamp: 1729089452640 + size: 1100765 + timestamp: 1740241083241 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea @@ -831,26 +840,26 @@ packages: license_family: GPL size: 997381 timestamp: 1707330687590 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda - sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 - md5: cc3573974587f12dda90d96e3e55a702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h767d61c_2.conda + sha256: 1a3130e0b9267e781b89399580f3163632d59fe5b0142900d63052ab1a53490e + md5: 06d02030237f4d5b3d9a7e7d348fe3c6 depends: - - _libgcc_mutex 0.1 conda_forge + - __glibc >=2.17,<3.0.a0 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 460992 - timestamp: 1729027639220 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda - sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf - md5: 376f0e73abbda6d23c0cb749adc195ef + size: 459862 + timestamp: 1740240588123 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 463521 - timestamp: 1729089357313 + size: 462783 + timestamp: 1740241005079 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_h7ac8fdf_openblas.conda build_number: 31 sha256: f583661921456e798aba10972a8abbd9d33571c655c1f66eff450edc9cbefcf3 @@ -864,6 +873,7 @@ packages: arch: x86_64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16790 timestamp: 1740087997375 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda @@ -879,6 +889,7 @@ packages: arch: aarch64 platform: linux license: BSD-3-Clause + license_family: BSD size: 16845 timestamp: 1740087923843 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda @@ -894,6 +905,7 @@ packages: arch: arm64 platform: osx license: BSD-3-Clause + license_family: BSD size: 17033 timestamp: 1740088134988 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda @@ -1152,50 +1164,51 @@ packages: license: Unlicense size: 898767 timestamp: 1739953312379 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 depends: - - libgcc 14.2.0 h77fa898_1 + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 - md5: 37f489acd39e22b623d2d1e5ac6d195c + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 depends: - - libgcc 14.2.0 he277a41_1 + - libgcc 14.2.0 he277a41_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3816794 - timestamp: 1729089463404 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 - md5: 8371ac6457591af2cf6159439c1fd051 + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b depends: - - libstdcxx 14.2.0 hc0a3c3a_1 + - libstdcxx 14.2.0 h8f9b012_2 arch: x86_64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54105 - timestamp: 1729027780628 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd - md5: 0e75771b8a03afae5a2c6ce71bc733f5 + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c depends: - - libstdcxx 14.2.0 h3f4de04_1 + - libstdcxx 14.2.0 h3f4de04_2 arch: aarch64 platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 54133 - timestamp: 1729089498541 + size: 53715 + timestamp: 1740241126343 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -1300,48 +1313,48 @@ packages: license_family: APACHE size: 280830 timestamp: 1736986295869 -- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022205-release.conda +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda noarch: python - sha256: a4b60cd65edc61629b10617ad28376f6fafec207e9df35dccd97081d47bd7287 - md5: 89ff35bb811c04bb8d4f69a3e176b445 + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a depends: - - max-core ==25.2.0.dev2025022205 release - - max-python ==25.2.0.dev2025022205 release - - mojo-jupyter ==25.2.0.dev2025022205 release - - mblack ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 9889 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022205-release.conda - sha256: 14616fa561632a7858f1b43fee2830a08bd6adcbb9876714c24b72687f316495 - md5: d5bad6719888ce70742d2b7c45a87b36 + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 243956720 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022205-release.conda - sha256: 5086b2bd4348d9453a926eba0a2c903fb7e90377bf83c532f17c7bf00234f060 - md5: 9cad83acf5ab35e1410d5c37d480d7b0 + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 246750593 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022205-release.conda - sha256: d3efc1acdcc133d3d8d8c9da8f3a8eb8a4d667992b32f5fa605fdfcc460d304d - md5: 94e7b104cf83e183e4c30a9881b910a7 + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 depends: - - mblack ==25.2.0.dev2025022205 release + - mblack ==25.2.0.dev2025022805 release license: LicenseRef-Modular-Proprietary - size: 212393465 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022205-release.conda + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: 73d71fade273fd0c50d230d2055d9f848f48cbccb5e129d47cc66eb370303121 - md5: b9ff7e746c60964a770a4a949df6edf9 + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1356,7 +1369,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1369,7 +1382,6 @@ packages: - requests >=2.32.3 - rich >=13.9.4 - safetensors >=0.5.2 - - scipy >=1.15.1 - sentinel >=0.3.0 - sse-starlette >=2.1.2 - tokenizers >=0.19.0 @@ -1377,16 +1389,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 120694172 - timestamp: 1740201380048 -- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022205-release.conda + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: f0fb6d2d56ecf06adbd0c66ea5ef79b8aba3c7f2dfb50b1acde92a39cf83c743 - md5: 5b4662a666c9a91e34c375cdeb328a0e + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1401,7 +1413,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1414,7 +1426,6 @@ packages: - requests >=2.32.3 - rich >=13.9.4 - safetensors >=0.5.2 - - scipy >=1.15.1 - sentinel >=0.3.0 - sse-starlette >=2.1.2 - tokenizers >=0.19.0 @@ -1422,16 +1433,16 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 123479562 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022205-release.conda + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda noarch: python - sha256: d9229f708c042db724a0cc56b30d2b81d7a1ac86e3f28e541a9a05da0ea4a3e8 - md5: d2519e42d7c3a5aa6d2b5f597ba34c0c + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022805 release - click >=8.0.0 - numpy >=1.18,<2.0 - sentencepiece >=0.2.0 @@ -1446,7 +1457,7 @@ packages: - nvitop >=1.4.1 - opentelemetry-api >=1.29.0 - opentelemetry-exporter-otlp-proto-http >=1.27.0 - - opentelemetry-exporter-prometheus >=0.48b0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 - opentelemetry-sdk >=1.29.0,<2.0 - pillow >=10.3.0 - prometheus_client >=0.21.0 @@ -1459,7 +1470,6 @@ packages: - requests >=2.32.3 - rich >=13.9.4 - safetensors >=0.5.2 - - scipy >=1.15.1 - sentinel >=0.3.0 - sse-starlette >=2.1.2 - tokenizers >=0.19.0 @@ -1467,14 +1477,14 @@ packages: - transformers >=4.40.1 - uvicorn >=0.34.0 - uvloop >=0.21.0 - - xgrammar >=0.1.11 + - xgrammar ==0.1.11 license: LicenseRef-Modular-Proprietary - size: 110154228 - timestamp: 1740202848149 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022205-release.conda + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda noarch: python - sha256: da6599faebf67d43c63618d55a0ebcfcba058ca80aaee80eccccf0c874ffaf14 - md5: 74aa857f5a6f1d4e004ef2d39b416f43 + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 depends: - python >=3.9,<3.13 - click >=8.0.0 @@ -1485,20 +1495,20 @@ packages: - typing_extensions >=v4.12.2 - python license: MIT - size: 130846 - timestamp: 1740201380167 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022205-release.conda + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda noarch: python - sha256: 9444c0b8c574e6efdee03d24fdd4340518313a796caf08f536a5798b9c7a6123 - md5: 7be2f23091dd2443ba395018d3005fcb + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 depends: - - max-core ==25.2.0.dev2025022205 release + - max-core ==25.2.0.dev2025022805 release - python >=3.9,<3.13 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22983 - timestamp: 1740201380167 + size: 22994 + timestamp: 1740719805201 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe md5: 29097e7ea634a45cc5386b95cac6568f @@ -1835,41 +1845,41 @@ packages: license_family: BSD size: 364649 timestamp: 1738271263898 -- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 - md5: 47d31b792659ce70f470b5c82fdfb7a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: x86_64 platform: linux license: GPL-3.0-only license_family: GPL - size: 281456 - timestamp: 1679532220005 -- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd - md5: 105eb1e16bf83bfb2eb380a48032b655 + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 depends: - - libgcc-ng >=12 - - ncurses >=6.3,<7.0a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 arch: aarch64 platform: linux license: GPL-3.0-only license_family: GPL - size: 294092 - timestamp: 1679532238805 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 depends: - - ncurses >=6.3,<7.0a0 + - ncurses >=6.5,<7.0a0 arch: arm64 platform: osx license: GPL-3.0-only license_family: GPL - size: 250351 - timestamp: 1679532511311 + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a md5: 480e915dfc6c592615ef6f217e615aa6 diff --git a/pixi.toml b/mojo/pixi.toml similarity index 91% rename from pixi.toml rename to mojo/pixi.toml index 37772a1b5e..5a4c015d34 100644 --- a/pixi.toml +++ b/mojo/pixi.toml @@ -7,7 +7,7 @@ platforms = ["linux-64", "linux-aarch64", "osx-arm64"] [tasks] build = "./stdlib/scripts/build-stdlib.sh" tests = "./stdlib/scripts/run-tests.sh" -examples = "./examples/run-examples.sh" +examples = "../examples/mojo/run-examples.sh" benchmarks = { cmd = ["./stdlib/scripts/run-benchmarks.sh"], env = { MODULAR_MOJO_NIGHTLY_IMPORT_PATH = "$CONDA_PREFIX/lib/mojo" } } [dependencies] diff --git a/proposals/README.md b/mojo/proposals/README.md similarity index 100% rename from proposals/README.md rename to mojo/proposals/README.md diff --git a/mojo/proposals/always_inline_builtin.md b/mojo/proposals/always_inline_builtin.md new file mode 100644 index 0000000000..769b27a1e8 --- /dev/null +++ b/mojo/proposals/always_inline_builtin.md @@ -0,0 +1,157 @@ +# @always_inline("builtin") + +Author: Chris Lattner +Date: Jan 31, 2025 +Status: Implemented, complete + +## Background and Motivation + +As Mojo has evolved, we’ve continued to push for a design where builtin +primitives are represented with user-defined types, instead of raw MLIR types +directly. This started back in the day by wrapping `__mlirtype.i1` with `Bool` +and `__mlirtype.index` with `Int` and more recently by wrapping +`__mlirtype.origin<..>` with `Origin`. This approach has a number of +advantages: + +1. This allows us to use methods on the library defined types to define + operators that apply to it, e.g. `__and__` for `Bool` and `Int`. +2. This is much easier to write and works with name lookup properly. +3. This moves MLIR types into being “implementation details of the standard + library” rather than user-exposed types. + +Overall, this has been a great result, part of the “Mojo is syntax sugar for +MLIR”. + +However, recent engineering discussions have shown a weakness with this +approach, Stephen recently pointed out: + +> One high level Q, I think a lot of the parameter pain is derived from +> primitive structures like Int and Bool being custom types. It means they +> become function calls in the IR and its a struggle to simplify. It seems +> like maybe we should revisit these being in the library and just have a +> small set of compiler builtin types for things like Bool. + +It would be very sad to have another parallel universe for “compiler builtin” +types that are neither Int nor the existing MLIR types! That said, he’s got a +really great point, and we’re accumulating a small collection of hacks to work +around the problems. + +There are several challenges that occur when these types are used in symbolic +parameter expressions. What is an example? Consider the result type of: + +```mojo +fn widen[dt: DType, n: Int](a: SIMD[dt, n], b: SIMD[dt, n]) -> SIMD[dt, n+n]: +``` + +The result type ends up being represented as `SIMD[dt, Int.__add__(n, n)]`. +This expression cannot be folded or parameter inlined at parse time (because `n` +is not a simple constant), so we end up representing the call to `Int.__add__` +symbolicly through elaboration time. + +This is nice and flexible and general, a core part of the full-general comptime +model that Mojo provides, but it poises a number of problems for the core types +like `Int` and `Bool` and `Origin` that Stephen is pointing out. A few example +problems: + +1. ✅ This causes significant IR bloat that annoys compiler developers because a + call to `Int.__add__` is far more verbose than a `POC::Add` with its sugared + form. +2. ✅ Underlying dialects like KGEN have symbolic optimizations for core types. + In this example, it would canonicalization “n+n” to “2*n” and these canonical + forms are important to reduce rebinds. +3. ✅ We have complicated and fragile logic to work around this in the case when + the the operands are “simple constants” (see + `inlineFunctionCallIntoPValueIfPossible` and transitive code it calls, + *shudder*) which has lots of problems, e.g. it completely fails on + parametric function calls. +4. ✅ Because that doesn’t work on parametric function calls, we get further + hacks like `tryOriginInitFold` which special cases `Origin.__init__` because + Origin is a parametric struct, and we need low-level canonical `!lit.origin` + values for internal reasons. +5. ✅ We have other hacks like `refineResultValue` . This was added long ago + when we were first bringing up dependent types and it shouldn’t be needed. + It serves to handle things like the example below. We want `x` to have type + `SIMD[dt2, 8]` instead of `SIMD[dt, Int.add(4, 4)]`. The formal type + maintains the apply expression, so it goes through and does a rebind to get + it out of the way, reflecting the additional information we have in the call + site. If we modeled this correctly, this would all happen automatically and + no rebind would be needed: + + ```mojo + fn example[dt2: DType](a: SIMD[dt2, 4]): + var x = widen(a, a) + ``` + +6. ✅ Generally anything that uses the comptime interpreter at parse time is + wrong because the IR hasn't been lowered through CF lowering and + CheckLifetimes. We need to get off of this for dependent type support. + +To summarize, Mojo has worked this way for a very long time, but there are too +many design smells adding up to there being a problem. I would love to resolve +this once and for all and I think one simple solution will resolve all this +mess. + +## Proposal: `@always_inline("builtin")` + +The proposed solution to this is to introduce another level to `@always_inline` +that is “like `"nodebug"` but harder”. The observation is that these types +really are special, the methods that apply to them are trivial and generally +known to the compiler, and the operations within these methods have well-known +magic representations (e.g. `POC::Add` attribute instead of `index.add` +operation). We don’t want to special case the methods themselves into the +compiler, but we do necessarily have a tight coupling and want type checking. + +This new level of `always_inline` would have the same behavior as `"nodebug"` +(e.g. get the same LLVM represention, still disable debug info generation etc) +but add two more behaviors. + +### Function definition body-resolution checking + +The magic behavior we’re looking for has specific limited use-cases and can only +handle specific limited forms. After the function body has been parsed, we need +to validate that it doesn’t use anything that `@always_inline("builtin")` can’t +handle - this checks that there is no control flow, no function calls to +functions that are not themselves `@always_inline("builtin")`, no use of +unsupported MLIR operations, etc. The forms we will be able to accept are +very limited, but that seems like it should be ok given that these methods are +all just wrappers around singular MLIR operations anyway. + +### Change CallEmission to do the inlining + +These change should be very simple and localized - if `emitCallInParamContext` +returns an apply parameter expression, check to see if the callee is an +`@always_inline("builtin")` function. If so, unconditionally inline the body +into the parameter representation (doing the remapping of operations like +`index.add` to `POC::Add` and form `StructAttr` and `StructExtractAttr` instead +of `StructExtractOp` which will all fold and cancel out). + +That’s it. + +## Thoughts and Implications + +This is something that has been haunting me for quite some time. I think that +this relatively simple extension will subsume and allow us to remove a bunch of +fragile complexity I mentioned before. I believe it should be straight-forward +to support parametric functions, because we’re already in the parameter domain +and we can specifically “just not support” hard cases if they came up. + +## Alternative Considered: Try inlining *all* “nodebug” param calls + +Weiwei points out that we could avoid adding the syntax for this: we could just +make the call emission logic notice that the call is to a “nodebug” function, +and scan it to see if it can be “parameter inlined” using the rules above. +These are the pros and cons I see of this approach: + +- Pro: No new syntax, nothing to explain or document. +- Con: It would be less predictable, you wouldn’t get a compile time error in a + case that you (i.e. a graph compiler engineer) wants inlined but isn’t getting + inlined. +- Con: Compile time would be much worse for every non-inlinable parameter call + (most of comptime). + +The compile time cost is induced because the parser would have to “body resolve” +the callee, which forces parsing the callee, type checking and IR generating it. +The vastly most common case will be that something cannot be inlined. The +benefit of the new syntax is we get a decoupling between these two things: we +just need to signature resolve to know the callee is “parameter”, and only then +do we body resolve it to do the inlining. diff --git a/proposals/byte-as-uint8.md b/mojo/proposals/byte-as-uint8.md similarity index 96% rename from proposals/byte-as-uint8.md rename to mojo/proposals/byte-as-uint8.md index 9881574ccd..03d4f77189 100644 --- a/proposals/byte-as-uint8.md +++ b/mojo/proposals/byte-as-uint8.md @@ -40,5 +40,5 @@ and 78 results for `DTypePointer[DType.int8]`. Replacing `DTypePointer[DType.int8]` with `DTypePointer[DType.uint8]` and `Pointer[Int8]` with `Pointer[UInt8]` on case by case bases is a substantial refactoring effort, but it will prevent a certain class of logical bugs (see -). As it is a breaking change in +). As it is a breaking change in sense of API design, it is sensible to do the refactoring as soon as possible. diff --git a/proposals/improved-hash-module.md b/mojo/proposals/improved-hash-module.md similarity index 100% rename from proposals/improved-hash-module.md rename to mojo/proposals/improved-hash-module.md diff --git a/proposals/inferred-parameters.md b/mojo/proposals/inferred-parameters.md similarity index 99% rename from proposals/inferred-parameters.md rename to mojo/proposals/inferred-parameters.md index f8eb6bf5c1..0e46dc0c1a 100644 --- a/proposals/inferred-parameters.md +++ b/mojo/proposals/inferred-parameters.md @@ -49,7 +49,7 @@ scalar_param[DType.int32, Int32()]() # 'dt' parameter is required This has been requested multiple times in various forms, especially given the new autoparameterization feature. The current tracking feature request: -- +- ## Proposal diff --git a/proposals/lifetimes-and-provenance.md b/mojo/proposals/lifetimes-and-provenance.md similarity index 100% rename from proposals/lifetimes-and-provenance.md rename to mojo/proposals/lifetimes-and-provenance.md diff --git a/proposals/lifetimes-keyword-renaming.md b/mojo/proposals/lifetimes-keyword-renaming.md similarity index 99% rename from proposals/lifetimes-keyword-renaming.md rename to mojo/proposals/lifetimes-keyword-renaming.md index 3b783202e7..b39636e616 100644 --- a/proposals/lifetimes-keyword-renaming.md +++ b/mojo/proposals/lifetimes-keyword-renaming.md @@ -2,7 +2,7 @@ Date: October 2024 -Previous revision: [[June 2023](https://github.com/modular/mojo/blob/f8d7cb8ba4c21ec3fbc87e21609b3fd56cab695f/proposals/lifetimes-keyword-renaming.md)] +Previous revision: [[June 2023](https://github.com/modular/max/blob/f8d7cb8ba4c21ec3fbc87e21609b3fd56cab695f/proposals/lifetimes-keyword-renaming.md)] The design of the Mojo references subsystem is starting to come together. To finalize the major points, it helps to come back and re-evaluate several early diff --git a/proposals/mojo-and-dynamism.md b/mojo/proposals/mojo-and-dynamism.md similarity index 100% rename from proposals/mojo-and-dynamism.md rename to mojo/proposals/mojo-and-dynamism.md diff --git a/proposals/opt-in-implicit-conversion.md b/mojo/proposals/opt-in-implicit-conversion.md similarity index 100% rename from proposals/opt-in-implicit-conversion.md rename to mojo/proposals/opt-in-implicit-conversion.md diff --git a/proposals/project-manifest-and-build-tool.md b/mojo/proposals/project-manifest-and-build-tool.md similarity index 100% rename from proposals/project-manifest-and-build-tool.md rename to mojo/proposals/project-manifest-and-build-tool.md diff --git a/proposals/ref-convention.md b/mojo/proposals/ref-convention.md similarity index 99% rename from proposals/ref-convention.md rename to mojo/proposals/ref-convention.md index 53b608e51e..f3c86e107c 100644 --- a/proposals/ref-convention.md +++ b/mojo/proposals/ref-convention.md @@ -12,7 +12,7 @@ Mojo’s safe references have evolved and iterated a lot. From the initial compiler re-plumbing that made memory-only types possible, to threading lifetimes through everything with the introduction of `!lit.ref` to the development of a “user-space” Reference type, to the recent discussions about -[adding automatic dereference to Reference](https://github.com/modular/mojo/discussions/2594), +[adding automatic dereference to Reference](https://github.com/modular/max/discussions/2594), we’ve been iteratively improving the model with a goal of ending up with something powerful and explainable. @@ -42,7 +42,7 @@ Along the way, we’ve had a number of challenges to address: to `Reference`. It would be awesome to clarify this. 5. We still need to - [reconsider which keywords](https://github.com/modular/mojo/blob/main/proposals/lifetimes-keyword-renaming.md) + [reconsider which keywords](https://github.com/modular/max/blob/main/mojo/proposals/lifetimes-keyword-renaming.md) to use for argument conventions. The `inout` keyword, for example, is problematic because it works with types that are not movable or copyable. The callee doesn’t actually move things in and out, it takes a mutable reference. diff --git a/proposals/remove-let-decls.md b/mojo/proposals/remove-let-decls.md similarity index 95% rename from proposals/remove-let-decls.md rename to mojo/proposals/remove-let-decls.md index 1d1f8a3692..2fda1bc30b 100644 --- a/proposals/remove-let-decls.md +++ b/mojo/proposals/remove-let-decls.md @@ -1,6 +1,6 @@ # Simplifying Mojo🔥 - let's get rid of `let` -Chris Lattner, Dec 5, 2023, Status: **Accepted**, [discussion thread](https://github.com/modular/mojo/discussions/1456#discussioncomment-8358722) +Chris Lattner, Dec 5, 2023, Status: **Accepted**, [discussion thread](https://github.com/modular/max/discussions/1456#discussioncomment-8358722) Mojo is still a new language, and is rapidly evolving. We’re learning a lot from other languages, but Mojo poses its own set of tradeoffs that indicate a @@ -10,7 +10,7 @@ One of the early decisions made in Mojo's development is that it adopts the `let` and `var` design point that Swift uses. This whitepaper argues that we should switch to a simpler model by jettisoning `let` and just retaining `var` (and implicit Python-style variable declarations in `def`). This has also been -[suggested by the community](https://github.com/modular/mojo/issues/1205). +[suggested by the community](https://github.com/modular/max/issues/1205). Note that immutability and value semantics remain an important part of the Mojo design, this is just about removing "named immutable variables". Immutable @@ -31,7 +31,7 @@ variables aren't a core programming concept, and not something required to achieve Mojo's goals. 2. The naming of `let` caused a lot of early [heat and -debate](https://github.com/modular/mojo/discussions/120). Other programming +debate](https://github.com/modular/max/discussions/120). Other programming languages have a wide range of design points (e.g. `const` in C/C++ and Javascript) and there is a divergence of naming for all these things: `let`, `val`, `const`, etc, etc. @@ -43,7 +43,7 @@ three concepts going around: `alias`, `let`, and `var`. Most of the uses of 4. Both Swift and Rust encourage immutable values - Swift (and currently Mojo) warn about unneeded mutability, Rust makes mutability more verbose (`let mut`), and some propose that Mojo [make mutability more -verbose](https://github.com/modular/mojo/issues/451). This cuts very hard +verbose](https://github.com/modular/max/issues/451). This cuts very hard against a lot of the design center of Python, which doesn’t even have this concept at all: it would be weird to make it the default, but if we don’t, then why bother having it? @@ -112,7 +112,7 @@ This would eliminate a bunch of complexity in the compiler as well: like: “`let x: Int; x = 1; use(x); x = 2; use(x)`” even though the original lifetime of the first “`x=1`” naturally ended and “`x`” is uninitialized before being assigned to. This has always been a design smell, and it - [doesn’t work right](https://github.com/modular/mojo/issues/1414). + [doesn’t work right](https://github.com/modular/max/issues/1414). This proposal will not affect runtime performance at all as far as we know. diff --git a/proposals/stdlib-insider-docs.md b/mojo/proposals/stdlib-insider-docs.md similarity index 100% rename from proposals/stdlib-insider-docs.md rename to mojo/proposals/stdlib-insider-docs.md diff --git a/proposals/value-ownership.md b/mojo/proposals/value-ownership.md similarity index 100% rename from proposals/value-ownership.md rename to mojo/proposals/value-ownership.md diff --git a/stdlib/README.md b/mojo/stdlib/README.md similarity index 96% rename from stdlib/README.md rename to mojo/stdlib/README.md index d64144c02d..8a9891f02d 100644 --- a/stdlib/README.md +++ b/mojo/stdlib/README.md @@ -54,6 +54,6 @@ See the license file in the repository for more details. ## Support For any inquiries, bug reports, or feature requests, please [open an -issue](https://github.com/modular/mojo/issues) on the GitHub repository. See +issue](https://github.com/modular/max/issues) on the GitHub repository. See the [Mojo contributor guide](../CONTRIBUTING.md) for guidelines on filing good bugs. diff --git a/stdlib/benchmarks/README.md b/mojo/stdlib/benchmarks/README.md similarity index 100% rename from stdlib/benchmarks/README.md rename to mojo/stdlib/benchmarks/README.md diff --git a/stdlib/benchmarks/algorithm/bench_elementwise.mojo b/mojo/stdlib/benchmarks/algorithm/bench_elementwise.mojo similarity index 100% rename from stdlib/benchmarks/algorithm/bench_elementwise.mojo rename to mojo/stdlib/benchmarks/algorithm/bench_elementwise.mojo diff --git a/stdlib/benchmarks/builtin/bench_int.mojo b/mojo/stdlib/benchmarks/builtin/bench_int.mojo similarity index 100% rename from stdlib/benchmarks/builtin/bench_int.mojo rename to mojo/stdlib/benchmarks/builtin/bench_int.mojo diff --git a/stdlib/benchmarks/builtin/bench_sort.mojo b/mojo/stdlib/benchmarks/builtin/bench_sort.mojo similarity index 100% rename from stdlib/benchmarks/builtin/bench_sort.mojo rename to mojo/stdlib/benchmarks/builtin/bench_sort.mojo diff --git a/stdlib/benchmarks/collections/bench_dict.mojo b/mojo/stdlib/benchmarks/collections/bench_dict.mojo similarity index 100% rename from stdlib/benchmarks/collections/bench_dict.mojo rename to mojo/stdlib/benchmarks/collections/bench_dict.mojo diff --git a/stdlib/benchmarks/collections/bench_string.mojo b/mojo/stdlib/benchmarks/collections/bench_string.mojo similarity index 100% rename from stdlib/benchmarks/collections/bench_string.mojo rename to mojo/stdlib/benchmarks/collections/bench_string.mojo diff --git a/stdlib/benchmarks/collections/data/README.md b/mojo/stdlib/benchmarks/collections/data/README.md similarity index 100% rename from stdlib/benchmarks/collections/data/README.md rename to mojo/stdlib/benchmarks/collections/data/README.md diff --git a/stdlib/benchmarks/collections/data/UN_charter_AR.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_AR.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_AR.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_AR.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_AR.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_AR.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_AR.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_AR.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_EN.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_EN.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_EN.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_EN.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_EN.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_EN.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_EN.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_EN.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_ES.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_ES.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_ES.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_ES.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_ES.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_ES.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_ES.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_ES.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_RU.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_RU.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_RU.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_RU.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_RU.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_RU.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_RU.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_RU.txt diff --git a/stdlib/benchmarks/collections/data/UN_charter_zh-CN.html b/mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.html similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_zh-CN.html rename to mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.html diff --git a/stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt b/mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt similarity index 100% rename from stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt rename to mojo/stdlib/benchmarks/collections/data/UN_charter_zh-CN.txt diff --git a/stdlib/benchmarks/hashlib/bench_hash.mojo b/mojo/stdlib/benchmarks/hashlib/bench_hash.mojo similarity index 100% rename from stdlib/benchmarks/hashlib/bench_hash.mojo rename to mojo/stdlib/benchmarks/hashlib/bench_hash.mojo diff --git a/stdlib/benchmarks/lit.cfg.py b/mojo/stdlib/benchmarks/lit.cfg.py similarity index 100% rename from stdlib/benchmarks/lit.cfg.py rename to mojo/stdlib/benchmarks/lit.cfg.py diff --git a/stdlib/benchmarks/math/bench_math.mojo b/mojo/stdlib/benchmarks/math/bench_math.mojo similarity index 100% rename from stdlib/benchmarks/math/bench_math.mojo rename to mojo/stdlib/benchmarks/math/bench_math.mojo diff --git a/stdlib/benchmarks/utils/bench_formatter.mojo b/mojo/stdlib/benchmarks/utils/bench_formatter.mojo similarity index 100% rename from stdlib/benchmarks/utils/bench_formatter.mojo rename to mojo/stdlib/benchmarks/utils/bench_formatter.mojo diff --git a/stdlib/benchmarks/utils/bench_memmem.mojo b/mojo/stdlib/benchmarks/utils/bench_memmem.mojo similarity index 100% rename from stdlib/benchmarks/utils/bench_memmem.mojo rename to mojo/stdlib/benchmarks/utils/bench_memmem.mojo diff --git a/stdlib/docs/development.md b/mojo/stdlib/docs/development.md similarity index 97% rename from stdlib/docs/development.md rename to mojo/stdlib/docs/development.md index 37cfb5182e..a306c57515 100644 --- a/stdlib/docs/development.md +++ b/mojo/stdlib/docs/development.md @@ -107,7 +107,7 @@ You can do the same for a directory with All the tests should pass on the `main` branch with the nightly Mojo compiler. If you've pulled the latest changes and they're still failing please [open a GitHub -issue](https://github.com/modular/mojo/issues/new?assignees=&labels=bug%2Cmojo&projects=&template=mojo_bug_report.yaml&title=%5BBUG%5D). +issue](https://github.com/modular/max/issues). ### Running a subset of the Standard Library Unit Tests @@ -135,7 +135,7 @@ disabled, you can set the environment variable `MOJO_ENABLE_ASSERTIONS_IN_TESTS=0`. If you run into any issues when running the tests, -[please file an issue](https://github.com/modular/mojo/issues) and we’ll take +[please file an issue](https://github.com/modular/max/issues) and we’ll take a look. ## Formatting changes diff --git a/stdlib/docs/docstring-style-guide.md b/mojo/stdlib/docs/docstring-style-guide.md similarity index 100% rename from stdlib/docs/docstring-style-guide.md rename to mojo/stdlib/docs/docstring-style-guide.md diff --git a/stdlib/docs/faq.md b/mojo/stdlib/docs/faq.md similarity index 100% rename from stdlib/docs/faq.md rename to mojo/stdlib/docs/faq.md diff --git a/stdlib/docs/governance-structure.md b/mojo/stdlib/docs/governance-structure.md similarity index 100% rename from stdlib/docs/governance-structure.md rename to mojo/stdlib/docs/governance-structure.md diff --git a/stdlib/docs/images/create-fork.png b/mojo/stdlib/docs/images/create-fork.png similarity index 100% rename from stdlib/docs/images/create-fork.png rename to mojo/stdlib/docs/images/create-fork.png diff --git a/stdlib/docs/images/doc-lint-quick-fix.png b/mojo/stdlib/docs/images/doc-lint-quick-fix.png similarity index 100% rename from stdlib/docs/images/doc-lint-quick-fix.png rename to mojo/stdlib/docs/images/doc-lint-quick-fix.png diff --git a/stdlib/docs/images/nightly-extension.png b/mojo/stdlib/docs/images/nightly-extension.png similarity index 100% rename from stdlib/docs/images/nightly-extension.png rename to mojo/stdlib/docs/images/nightly-extension.png diff --git a/stdlib/docs/internal/README.md b/mojo/stdlib/docs/internal/README.md similarity index 100% rename from stdlib/docs/internal/README.md rename to mojo/stdlib/docs/internal/README.md diff --git a/stdlib/docs/internal/compiler.md b/mojo/stdlib/docs/internal/compiler.md similarity index 100% rename from stdlib/docs/internal/compiler.md rename to mojo/stdlib/docs/internal/compiler.md diff --git a/stdlib/docs/internal/mlir.md b/mojo/stdlib/docs/internal/mlir.md similarity index 100% rename from stdlib/docs/internal/mlir.md rename to mojo/stdlib/docs/internal/mlir.md diff --git a/stdlib/docs/internal/runtime.md b/mojo/stdlib/docs/internal/runtime.md similarity index 100% rename from stdlib/docs/internal/runtime.md rename to mojo/stdlib/docs/internal/runtime.md diff --git a/stdlib/docs/roadmap.md b/mojo/stdlib/docs/roadmap.md similarity index 100% rename from stdlib/docs/roadmap.md rename to mojo/stdlib/docs/roadmap.md diff --git a/stdlib/docs/style-guide.md b/mojo/stdlib/docs/style-guide.md similarity index 100% rename from stdlib/docs/style-guide.md rename to mojo/stdlib/docs/style-guide.md diff --git a/stdlib/docs/vision.md b/mojo/stdlib/docs/vision.md similarity index 100% rename from stdlib/docs/vision.md rename to mojo/stdlib/docs/vision.md diff --git a/stdlib/scripts/.markdownlint.yaml b/mojo/stdlib/scripts/.markdownlint.yaml similarity index 100% rename from stdlib/scripts/.markdownlint.yaml rename to mojo/stdlib/scripts/.markdownlint.yaml diff --git a/stdlib/scripts/build-stdlib.sh b/mojo/stdlib/scripts/build-stdlib.sh similarity index 100% rename from stdlib/scripts/build-stdlib.sh rename to mojo/stdlib/scripts/build-stdlib.sh diff --git a/stdlib/scripts/check-docstrings.py b/mojo/stdlib/scripts/check-docstrings.py similarity index 97% rename from stdlib/scripts/check-docstrings.py rename to mojo/stdlib/scripts/check-docstrings.py index ddba7bb42c..1eb77ea27e 100644 --- a/stdlib/scripts/check-docstrings.py +++ b/mojo/stdlib/scripts/check-docstrings.py @@ -27,7 +27,7 @@ def main(): "--diagnose-missing-doc-strings", "-o", "/dev/null", - "./stdlib/src", + "./mojo/stdlib/src", ] result = subprocess.run(command, capture_output=True) if result.stderr or result.returncode != 0: diff --git a/stdlib/scripts/check_licenses.mojo b/mojo/stdlib/scripts/check_licenses.mojo similarity index 100% rename from stdlib/scripts/check_licenses.mojo rename to mojo/stdlib/scripts/check_licenses.mojo diff --git a/stdlib/scripts/install-build-tools-linux.sh b/mojo/stdlib/scripts/install-build-tools-linux.sh similarity index 100% rename from stdlib/scripts/install-build-tools-linux.sh rename to mojo/stdlib/scripts/install-build-tools-linux.sh diff --git a/stdlib/scripts/install-build-tools-macos.sh b/mojo/stdlib/scripts/install-build-tools-macos.sh similarity index 100% rename from stdlib/scripts/install-build-tools-macos.sh rename to mojo/stdlib/scripts/install-build-tools-macos.sh diff --git a/stdlib/scripts/markdownlint.sh b/mojo/stdlib/scripts/markdownlint.sh similarity index 100% rename from stdlib/scripts/markdownlint.sh rename to mojo/stdlib/scripts/markdownlint.sh diff --git a/stdlib/scripts/run-benchmarks.sh b/mojo/stdlib/scripts/run-benchmarks.sh similarity index 100% rename from stdlib/scripts/run-benchmarks.sh rename to mojo/stdlib/scripts/run-benchmarks.sh diff --git a/stdlib/scripts/run-tests.sh b/mojo/stdlib/scripts/run-tests.sh similarity index 100% rename from stdlib/scripts/run-tests.sh rename to mojo/stdlib/scripts/run-tests.sh diff --git a/stdlib/src/__init__.mojo b/mojo/stdlib/src/__init__.mojo similarity index 100% rename from stdlib/src/__init__.mojo rename to mojo/stdlib/src/__init__.mojo diff --git a/stdlib/src/base64/__init__.mojo b/mojo/stdlib/src/base64/__init__.mojo similarity index 100% rename from stdlib/src/base64/__init__.mojo rename to mojo/stdlib/src/base64/__init__.mojo diff --git a/stdlib/src/base64/_b64encode.mojo b/mojo/stdlib/src/base64/_b64encode.mojo similarity index 100% rename from stdlib/src/base64/_b64encode.mojo rename to mojo/stdlib/src/base64/_b64encode.mojo diff --git a/stdlib/src/base64/base64.mojo b/mojo/stdlib/src/base64/base64.mojo similarity index 100% rename from stdlib/src/base64/base64.mojo rename to mojo/stdlib/src/base64/base64.mojo diff --git a/stdlib/src/bit/__init__.mojo b/mojo/stdlib/src/bit/__init__.mojo similarity index 100% rename from stdlib/src/bit/__init__.mojo rename to mojo/stdlib/src/bit/__init__.mojo diff --git a/stdlib/src/bit/bit.mojo b/mojo/stdlib/src/bit/bit.mojo similarity index 100% rename from stdlib/src/bit/bit.mojo rename to mojo/stdlib/src/bit/bit.mojo diff --git a/stdlib/src/builtin/__init__.mojo b/mojo/stdlib/src/builtin/__init__.mojo similarity index 100% rename from stdlib/src/builtin/__init__.mojo rename to mojo/stdlib/src/builtin/__init__.mojo diff --git a/stdlib/src/builtin/_closure.mojo b/mojo/stdlib/src/builtin/_closure.mojo similarity index 100% rename from stdlib/src/builtin/_closure.mojo rename to mojo/stdlib/src/builtin/_closure.mojo diff --git a/stdlib/src/builtin/_format_float.mojo b/mojo/stdlib/src/builtin/_format_float.mojo similarity index 100% rename from stdlib/src/builtin/_format_float.mojo rename to mojo/stdlib/src/builtin/_format_float.mojo diff --git a/stdlib/src/builtin/_location.mojo b/mojo/stdlib/src/builtin/_location.mojo similarity index 100% rename from stdlib/src/builtin/_location.mojo rename to mojo/stdlib/src/builtin/_location.mojo diff --git a/stdlib/src/builtin/_pybind.mojo b/mojo/stdlib/src/builtin/_pybind.mojo similarity index 100% rename from stdlib/src/builtin/_pybind.mojo rename to mojo/stdlib/src/builtin/_pybind.mojo diff --git a/stdlib/src/builtin/_startup.mojo b/mojo/stdlib/src/builtin/_startup.mojo similarity index 100% rename from stdlib/src/builtin/_startup.mojo rename to mojo/stdlib/src/builtin/_startup.mojo diff --git a/stdlib/src/builtin/_stubs.mojo b/mojo/stdlib/src/builtin/_stubs.mojo similarity index 100% rename from stdlib/src/builtin/_stubs.mojo rename to mojo/stdlib/src/builtin/_stubs.mojo diff --git a/stdlib/src/builtin/anytype.mojo b/mojo/stdlib/src/builtin/anytype.mojo similarity index 100% rename from stdlib/src/builtin/anytype.mojo rename to mojo/stdlib/src/builtin/anytype.mojo diff --git a/stdlib/src/builtin/bool.mojo b/mojo/stdlib/src/builtin/bool.mojo similarity index 100% rename from stdlib/src/builtin/bool.mojo rename to mojo/stdlib/src/builtin/bool.mojo diff --git a/stdlib/src/builtin/breakpoint.mojo b/mojo/stdlib/src/builtin/breakpoint.mojo similarity index 100% rename from stdlib/src/builtin/breakpoint.mojo rename to mojo/stdlib/src/builtin/breakpoint.mojo diff --git a/stdlib/src/builtin/builtin_list.mojo b/mojo/stdlib/src/builtin/builtin_list.mojo similarity index 100% rename from stdlib/src/builtin/builtin_list.mojo rename to mojo/stdlib/src/builtin/builtin_list.mojo diff --git a/stdlib/src/builtin/builtin_slice.mojo b/mojo/stdlib/src/builtin/builtin_slice.mojo similarity index 100% rename from stdlib/src/builtin/builtin_slice.mojo rename to mojo/stdlib/src/builtin/builtin_slice.mojo diff --git a/stdlib/src/builtin/comparable.mojo b/mojo/stdlib/src/builtin/comparable.mojo similarity index 100% rename from stdlib/src/builtin/comparable.mojo rename to mojo/stdlib/src/builtin/comparable.mojo diff --git a/stdlib/src/builtin/constrained.mojo b/mojo/stdlib/src/builtin/constrained.mojo similarity index 100% rename from stdlib/src/builtin/constrained.mojo rename to mojo/stdlib/src/builtin/constrained.mojo diff --git a/stdlib/src/builtin/coroutine.mojo b/mojo/stdlib/src/builtin/coroutine.mojo similarity index 100% rename from stdlib/src/builtin/coroutine.mojo rename to mojo/stdlib/src/builtin/coroutine.mojo diff --git a/stdlib/src/builtin/debug_assert.mojo b/mojo/stdlib/src/builtin/debug_assert.mojo similarity index 100% rename from stdlib/src/builtin/debug_assert.mojo rename to mojo/stdlib/src/builtin/debug_assert.mojo diff --git a/stdlib/src/builtin/dtype.mojo b/mojo/stdlib/src/builtin/dtype.mojo similarity index 100% rename from stdlib/src/builtin/dtype.mojo rename to mojo/stdlib/src/builtin/dtype.mojo diff --git a/stdlib/src/builtin/equality_comparable.mojo b/mojo/stdlib/src/builtin/equality_comparable.mojo similarity index 100% rename from stdlib/src/builtin/equality_comparable.mojo rename to mojo/stdlib/src/builtin/equality_comparable.mojo diff --git a/stdlib/src/builtin/error.mojo b/mojo/stdlib/src/builtin/error.mojo similarity index 100% rename from stdlib/src/builtin/error.mojo rename to mojo/stdlib/src/builtin/error.mojo diff --git a/stdlib/src/builtin/file.mojo b/mojo/stdlib/src/builtin/file.mojo similarity index 98% rename from stdlib/src/builtin/file.mojo rename to mojo/stdlib/src/builtin/file.mojo index 7ee2211ece..1e74cefa6c 100644 --- a/stdlib/src/builtin/file.mojo +++ b/mojo/stdlib/src/builtin/file.mojo @@ -130,7 +130,7 @@ struct FileHandle: """Reads data from a file and sets the file handle seek position. If size is left as the default of -1, it will read to the end of the file. Setting size to a number larger than what's in the file will set - String.size to the total number of bytes, and read all the data. + the String length to the total number of bytes, and read all the data. Args: size: Requested number of bytes to read (Default: -1 = EOF). @@ -274,7 +274,7 @@ struct FileHandle: """Reads data from a file and sets the file handle seek position. If size is left as default of -1, it will read to the end of the file. Setting size to a number larger than what's in the file will be handled - and set the List.size to the total number of bytes in the file. + and set the List length to the total number of bytes in the file. Args: size: Requested number of bytes to read (Default: -1 = EOF). diff --git a/stdlib/src/builtin/file_descriptor.mojo b/mojo/stdlib/src/builtin/file_descriptor.mojo similarity index 100% rename from stdlib/src/builtin/file_descriptor.mojo rename to mojo/stdlib/src/builtin/file_descriptor.mojo diff --git a/stdlib/src/builtin/float_literal.mojo b/mojo/stdlib/src/builtin/float_literal.mojo similarity index 84% rename from stdlib/src/builtin/float_literal.mojo rename to mojo/stdlib/src/builtin/float_literal.mojo index f94ecf8e7f..569e204cb6 100644 --- a/stdlib/src/builtin/float_literal.mojo +++ b/mojo/stdlib/src/builtin/float_literal.mojo @@ -15,8 +15,6 @@ These are Mojo built-ins, so you don't need to import them. """ -from math import Ceilable, CeilDivable, Floorable, Truncable - # ===-----------------------------------------------------------------------===# # FloatLiteral # ===-----------------------------------------------------------------------===# @@ -26,15 +24,10 @@ from math import Ceilable, CeilDivable, Floorable, Truncable @nonmaterializable(Float64) @register_passable("trivial") struct FloatLiteral( - Absable, - Ceilable, - CeilDivable, Comparable, - Floorable, ImplicitlyBoolable, Intable, Stringable, - Truncable, Floatable, ): """Mojo floating point literal type.""" @@ -188,76 +181,6 @@ struct FloatLiteral( """ return self * Self(-1) - @always_inline("nodebug") - fn __abs__(self) -> Self: - """Return the absolute value of the FloatLiteral. - - Returns: - The absolute value. - """ - if self > 0: - return self - return -self - - @always_inline("nodebug") - fn __floor__(self) -> Self: - """Return the floor value of the FloatLiteral. - - Returns: - The floor value. - """ - - # Handle special values first. - if not self._is_normal(): - return self - - # __int_literal__ rounds towards zero, so it's correct for integers and - # positive values. - var truncated: IntLiteral = self.__int_literal__() - - # Ensure this equality doesn't hit any implicit conversions. - if self >= 0 or self.__eq__(Self(truncated)): - return truncated - return truncated - 1 - - @always_inline("nodebug") - fn __ceil__(self) -> Self: - """Return the ceiling value of the FloatLiteral. - - Returns: - The ceiling value. - """ - - # Handle special values first. - if not self._is_normal(): - return self - - # __int_literal__ rounds towards zero, so it's correct for integers and - # negative values. - var truncated: IntLiteral = self.__int_literal__() - - # Ensure this equality doesn't hit any implicit conversions. - if self <= 0 or self.__eq__(Self(truncated)): - return truncated - return truncated + 1 - - @always_inline("nodebug") - fn __trunc__(self) -> Self: - """Truncates the floating point literal. If there is a fractional - component, then the value is truncated towards zero. - - For example, `(4.5).__trunc__()` returns `4.0`, and `(-3.7).__trunc__()` - returns `-3.0`. - - Returns: - The truncated FloatLiteral value. - """ - - # Handle special values first. - if not self._is_normal(): - return self - return Self(self.__int_literal__()) - # ===------------------------------------------------------------------===# # Arithmetic Operators # ===------------------------------------------------------------------===# @@ -319,7 +242,7 @@ struct FloatLiteral( oper = __mlir_attr.`#kgen` ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __floordiv__(self, rhs: Self) -> Self: """Returns self divided by rhs, rounded down to the nearest integer. @@ -329,9 +252,12 @@ struct FloatLiteral( Returns: `floor(self / rhs)` value. """ - return self.__truediv__(rhs).__floor__() + # TODO - Python raises an error on divide by 0.0 or -0.0 + return __mlir_op.`kgen.float_literal.binop`[ + oper = __mlir_attr.`#kgen` + ](self.value, rhs.value) - @always_inline("nodebug") + @always_inline("builtin") fn __mod__(self, rhs: Self) -> Self: """Return the remainder of self divided by rhs. @@ -341,9 +267,9 @@ struct FloatLiteral( Returns: The remainder of dividing self by rhs. """ - var quotient: Self = self.__floordiv__(rhs) - return self - (quotient * rhs) + return self - (self.__floordiv__(rhs) * rhs) + @always_inline("builtin") fn __rfloordiv__(self, rhs: Self) -> Self: """Returns rhs divided by self, rounded down to the nearest integer. @@ -355,7 +281,7 @@ struct FloatLiteral( """ return rhs // self - @always_inline("nodebug") + @always_inline("builtin") fn __ceildiv__(self, denominator: Self) -> Self: """Return the rounded-up result of dividing self by denominator. diff --git a/stdlib/src/builtin/floatable.mojo b/mojo/stdlib/src/builtin/floatable.mojo similarity index 100% rename from stdlib/src/builtin/floatable.mojo rename to mojo/stdlib/src/builtin/floatable.mojo diff --git a/stdlib/src/builtin/format_int.mojo b/mojo/stdlib/src/builtin/format_int.mojo similarity index 100% rename from stdlib/src/builtin/format_int.mojo rename to mojo/stdlib/src/builtin/format_int.mojo diff --git a/stdlib/src/builtin/identifiable.mojo b/mojo/stdlib/src/builtin/identifiable.mojo similarity index 100% rename from stdlib/src/builtin/identifiable.mojo rename to mojo/stdlib/src/builtin/identifiable.mojo diff --git a/stdlib/src/builtin/int.mojo b/mojo/stdlib/src/builtin/int.mojo similarity index 100% rename from stdlib/src/builtin/int.mojo rename to mojo/stdlib/src/builtin/int.mojo diff --git a/stdlib/src/builtin/int_literal.mojo b/mojo/stdlib/src/builtin/int_literal.mojo similarity index 98% rename from stdlib/src/builtin/int_literal.mojo rename to mojo/stdlib/src/builtin/int_literal.mojo index 34be2d64d3..c5084fcf39 100644 --- a/stdlib/src/builtin/int_literal.mojo +++ b/mojo/stdlib/src/builtin/int_literal.mojo @@ -19,7 +19,6 @@ from math import Ceilable, CeilDivable, Floorable, Truncable @nonmaterializable(Int) @register_passable("trivial") struct IntLiteral( - Absable, Ceilable, CeilDivable, Comparable, @@ -401,17 +400,6 @@ struct IntLiteral( _type = __mlir_type.index, treatIndexAsUnsigned = __mlir_attr.unit ](self.value) - @always_inline("nodebug") - fn __abs__(self) -> Self: - """Return the absolute value of the IntLiteral value. - - Returns: - The absolute value. - """ - if self >= 0: - return self - return -self - @always_inline("builtin") fn __ceil__(self) -> Self: """Return the ceiling of the IntLiteral value, which is itself. diff --git a/stdlib/src/builtin/io.mojo b/mojo/stdlib/src/builtin/io.mojo similarity index 100% rename from stdlib/src/builtin/io.mojo rename to mojo/stdlib/src/builtin/io.mojo diff --git a/stdlib/src/builtin/len.mojo b/mojo/stdlib/src/builtin/len.mojo similarity index 100% rename from stdlib/src/builtin/len.mojo rename to mojo/stdlib/src/builtin/len.mojo diff --git a/stdlib/src/builtin/math.mojo b/mojo/stdlib/src/builtin/math.mojo similarity index 94% rename from stdlib/src/builtin/math.mojo rename to mojo/stdlib/src/builtin/math.mojo index 7f0c693b67..c787dd8387 100644 --- a/stdlib/src/builtin/math.mojo +++ b/mojo/stdlib/src/builtin/math.mojo @@ -68,36 +68,6 @@ fn abs[T: Absable](value: T) -> T: return value.__abs__() -# TODO: https://github.com/modularml/modular/issues/38694 -# TODO: Remove this -@always_inline -fn abs(value: IntLiteral) -> IntLiteral: - """Get the absolute value of the given IntLiteral. - - Args: - value: The IntLiteral to get the absolute value of. - - Returns: - The absolute value of the IntLiteral. - """ - return value.__abs__() - - -# TODO: https://github.com/modularml/modular/issues/38694 -# TODO: Remove this -@always_inline -fn abs(value: FloatLiteral) -> FloatLiteral: - """Get the absolute value of the given FloatLiteral. - - Args: - value: The FloatLiteral to get the absolute value of. - - Returns: - The absolute value of the FloatLiteral. - """ - return value.__abs__() - - # ===----------------------------------------------------------------------=== # # divmod # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/builtin/none.mojo b/mojo/stdlib/src/builtin/none.mojo similarity index 100% rename from stdlib/src/builtin/none.mojo rename to mojo/stdlib/src/builtin/none.mojo diff --git a/stdlib/src/builtin/object.mojo b/mojo/stdlib/src/builtin/object.mojo similarity index 100% rename from stdlib/src/builtin/object.mojo rename to mojo/stdlib/src/builtin/object.mojo diff --git a/stdlib/src/builtin/range.mojo b/mojo/stdlib/src/builtin/range.mojo similarity index 100% rename from stdlib/src/builtin/range.mojo rename to mojo/stdlib/src/builtin/range.mojo diff --git a/stdlib/src/builtin/rebind.mojo b/mojo/stdlib/src/builtin/rebind.mojo similarity index 100% rename from stdlib/src/builtin/rebind.mojo rename to mojo/stdlib/src/builtin/rebind.mojo diff --git a/stdlib/src/builtin/repr.mojo b/mojo/stdlib/src/builtin/repr.mojo similarity index 100% rename from stdlib/src/builtin/repr.mojo rename to mojo/stdlib/src/builtin/repr.mojo diff --git a/stdlib/src/builtin/reversed.mojo b/mojo/stdlib/src/builtin/reversed.mojo similarity index 100% rename from stdlib/src/builtin/reversed.mojo rename to mojo/stdlib/src/builtin/reversed.mojo diff --git a/stdlib/src/builtin/simd.mojo b/mojo/stdlib/src/builtin/simd.mojo similarity index 99% rename from stdlib/src/builtin/simd.mojo rename to mojo/stdlib/src/builtin/simd.mojo index 018d8f5f25..3a39d1c5ed 100644 --- a/stdlib/src/builtin/simd.mojo +++ b/mojo/stdlib/src/builtin/simd.mojo @@ -2256,7 +2256,7 @@ struct SIMD[type: DType, size: Int]( # Not an overload of shuffle because there is ambiguity # with fn shuffle[*mask: Int](self, other: Self) -> Self: - # TODO: move to the utils directory - see https://github.com/modular/mojo/issues/3477 + # TODO: move to the utils directory - see https://github.com/modular/max/issues/3477 @always_inline fn _dynamic_shuffle[ mask_size: Int, // diff --git a/stdlib/src/builtin/sort.mojo b/mojo/stdlib/src/builtin/sort.mojo similarity index 100% rename from stdlib/src/builtin/sort.mojo rename to mojo/stdlib/src/builtin/sort.mojo diff --git a/stdlib/src/builtin/str.mojo b/mojo/stdlib/src/builtin/str.mojo similarity index 100% rename from stdlib/src/builtin/str.mojo rename to mojo/stdlib/src/builtin/str.mojo diff --git a/stdlib/src/builtin/string_literal.mojo b/mojo/stdlib/src/builtin/string_literal.mojo similarity index 96% rename from stdlib/src/builtin/string_literal.mojo rename to mojo/stdlib/src/builtin/string_literal.mojo index becc15ed91..081b34628c 100644 --- a/stdlib/src/builtin/string_literal.mojo +++ b/mojo/stdlib/src/builtin/string_literal.mojo @@ -412,17 +412,10 @@ struct StringLiteral( # inline the string slice constructor to work around an elaborator # memory leak. # return self.as_string_slice() - var string = String() - var length = self.byte_length() - var buffer = String._buffer_type() - var new_capacity = length + 1 - buffer._realloc(new_capacity) - buffer.size = new_capacity - var data: UnsafePointer[UInt8] = self.unsafe_ptr() - memcpy(buffer.data, data, length) - (buffer.data + length).init_pointee_move(0) - string._buffer = buffer^ - return string + var buffer = String._buffer_type(capacity=self.byte_length() + 1) + buffer.extend(self.as_bytes()) + buffer.append(0) + return String(buffer=buffer^) @no_inline fn __repr__(self) -> String: @@ -1002,3 +995,39 @@ struct StringLiteral( A copy of the string with no leading whitespaces. """ return String(String(self).lstrip()) + + +fn _base64_encode[str: StringLiteral]() -> StringLiteral: + """Encode the string literal using Base64 encoding. + + Returns: + A new string literal with the Base64 encoded string. + """ + return __mlir_op.`pop.string.base64.encode`(str.value) + + +fn _base64_decode[str: StringLiteral]() -> StringLiteral: + """Decode the string literal using Base64 encoding. + + Returns: + A new string literal with the Base64 decoded string. + """ + return __mlir_op.`pop.string.base64.decode`(str.value) + + +fn _compress[str: StringLiteral]() -> StringLiteral: + """Compress the string literal using zlib. + + Returns: + A new string literal with the compressed string. + """ + return __mlir_op.`pop.string.compress`(str.value) + + +fn _decompress[str: StringLiteral]() -> StringLiteral: + """Decompress the string literal using zlib. + + Returns: + A new string literal with the decompressed string. + """ + return __mlir_op.`pop.string.decompress`(str.value) diff --git a/stdlib/src/builtin/swap.mojo b/mojo/stdlib/src/builtin/swap.mojo similarity index 100% rename from stdlib/src/builtin/swap.mojo rename to mojo/stdlib/src/builtin/swap.mojo diff --git a/stdlib/src/builtin/tuple.mojo b/mojo/stdlib/src/builtin/tuple.mojo similarity index 100% rename from stdlib/src/builtin/tuple.mojo rename to mojo/stdlib/src/builtin/tuple.mojo diff --git a/stdlib/src/builtin/type_aliases.mojo b/mojo/stdlib/src/builtin/type_aliases.mojo similarity index 100% rename from stdlib/src/builtin/type_aliases.mojo rename to mojo/stdlib/src/builtin/type_aliases.mojo diff --git a/stdlib/src/builtin/uint.mojo b/mojo/stdlib/src/builtin/uint.mojo similarity index 100% rename from stdlib/src/builtin/uint.mojo rename to mojo/stdlib/src/builtin/uint.mojo diff --git a/stdlib/src/builtin/value.mojo b/mojo/stdlib/src/builtin/value.mojo similarity index 100% rename from stdlib/src/builtin/value.mojo rename to mojo/stdlib/src/builtin/value.mojo diff --git a/stdlib/src/collections/__init__.mojo b/mojo/stdlib/src/collections/__init__.mojo similarity index 100% rename from stdlib/src/collections/__init__.mojo rename to mojo/stdlib/src/collections/__init__.mojo diff --git a/stdlib/src/collections/_index_normalization.mojo b/mojo/stdlib/src/collections/_index_normalization.mojo similarity index 100% rename from stdlib/src/collections/_index_normalization.mojo rename to mojo/stdlib/src/collections/_index_normalization.mojo diff --git a/stdlib/src/collections/counter.mojo b/mojo/stdlib/src/collections/counter.mojo similarity index 100% rename from stdlib/src/collections/counter.mojo rename to mojo/stdlib/src/collections/counter.mojo diff --git a/stdlib/src/collections/deque.mojo b/mojo/stdlib/src/collections/deque.mojo similarity index 100% rename from stdlib/src/collections/deque.mojo rename to mojo/stdlib/src/collections/deque.mojo diff --git a/stdlib/src/collections/dict.mojo b/mojo/stdlib/src/collections/dict.mojo similarity index 100% rename from stdlib/src/collections/dict.mojo rename to mojo/stdlib/src/collections/dict.mojo diff --git a/stdlib/src/collections/inline_array.mojo b/mojo/stdlib/src/collections/inline_array.mojo similarity index 98% rename from stdlib/src/collections/inline_array.mojo rename to mojo/stdlib/src/collections/inline_array.mojo index 142545b5a6..3cb3161e53 100644 --- a/stdlib/src/collections/inline_array.mojo +++ b/mojo/stdlib/src/collections/inline_array.mojo @@ -304,7 +304,13 @@ struct InlineArray[ return UnsafePointer(ptr)[] @always_inline - fn unsafe_ptr(self) -> UnsafePointer[Self.ElementType]: + fn unsafe_ptr( + ref self, + ) -> UnsafePointer[ + Self.ElementType, + mut = Origin(__origin_of(self)).is_mutable, + origin = __origin_of(self), + ]: """Get an `UnsafePointer` to the underlying array. That pointer is unsafe but can be used to read or write to the array. diff --git a/stdlib/src/collections/inline_list.mojo b/mojo/stdlib/src/collections/inline_list.mojo similarity index 100% rename from stdlib/src/collections/inline_list.mojo rename to mojo/stdlib/src/collections/inline_list.mojo diff --git a/stdlib/src/collections/interval.mojo b/mojo/stdlib/src/collections/interval.mojo similarity index 100% rename from stdlib/src/collections/interval.mojo rename to mojo/stdlib/src/collections/interval.mojo diff --git a/stdlib/src/collections/linked_list.mojo b/mojo/stdlib/src/collections/linked_list.mojo similarity index 99% rename from stdlib/src/collections/linked_list.mojo rename to mojo/stdlib/src/collections/linked_list.mojo index 55c49adc18..6c145d10fa 100644 --- a/stdlib/src/collections/linked_list.mojo +++ b/mojo/stdlib/src/collections/linked_list.mojo @@ -203,7 +203,7 @@ struct LinkedList[ self._tail = node # Do not destroy the elements when their backing storage goes away. - # FIXME(https://github.com/modular/mojo/issues/3969) this is leaking! + # FIXME(https://github.com/modular/max/issues/3969) this is leaking! __disable_del elements self._size = length diff --git a/stdlib/src/collections/list.mojo b/mojo/stdlib/src/collections/list.mojo similarity index 93% rename from stdlib/src/collections/list.mojo rename to mojo/stdlib/src/collections/list.mojo index 21416c95dd..1aa7051342 100644 --- a/stdlib/src/collections/list.mojo +++ b/mojo/stdlib/src/collections/list.mojo @@ -98,7 +98,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Fields var data: UnsafePointer[T] """The underlying storage for the list.""" - var size: Int + var _len: Int """The number of elements in the list.""" var capacity: Int """The amount of elements that can fit in the list without resizing it.""" @@ -110,7 +110,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn __init__(out self): """Constructs an empty list.""" self.data = UnsafePointer[T]() - self.size = 0 + self._len = 0 self.capacity = 0 fn copy(self) -> Self: @@ -131,7 +131,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( capacity: The requested capacity of the list. """ self.data = UnsafePointer[T].alloc(capacity) - self.size = 0 + self._len = 0 self.capacity = capacity fn __init__(out self, owned *values: T): @@ -161,7 +161,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Do not destroy the elements when their backing storage goes away. __disable_del elements - self.size = length + self._len = length fn __init__(out self, span: Span[T]): """Constructs a list from the a Span of values. @@ -184,7 +184,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( capacity: The capacity of the list. """ self.data = ptr - self.size = length + self._len = length self.capacity = capacity fn __moveinit__(out self, owned existing: Self): @@ -194,7 +194,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( existing: The existing list. """ self.data = existing.data - self.size = existing.size + self._len = existing._len self.capacity = existing.capacity fn __copyinit__(out self, existing: Self): @@ -212,7 +212,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( @parameter if not hint_trivial_type: - for i in range(self.size): + for i in range(len(self)): (self.data + i).destroy_pointee() self.data.free() @@ -369,13 +369,14 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Trait implementations # ===-------------------------------------------------------------------===# + @always_inline("nodebug") fn __len__(self) -> Int: """Gets the number of elements in the list. Returns: The number of elements in the list. """ - return self.size + return self._len fn __bool__(self) -> Bool: """Checks whether the list has any elements or not. @@ -411,7 +412,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Returns: A string representation of the list. """ - var output = String() + # at least 1 byte per item e.g.: [a, b, c, d] = 4 + 2 * 3 + [] + null + var l = len(self) + var output = String(capacity=l + 2 * (l - 1) * Int(l > 1) + 3) self.write_to(output) return output^ @@ -478,11 +481,12 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn _realloc(mut self, new_capacity: Int): var new_data = UnsafePointer[T].alloc(new_capacity) - _move_pointee_into_many_elements[hint_trivial_type]( - dest=new_data, - src=self.data, - size=self.size, - ) + @parameter + if hint_trivial_type: + memcpy(new_data, self.data, len(self)) + else: + for i in range(len(self)): + (self.data + i).move_pointee_into(new_data + i) if self.data: self.data.free() @@ -499,10 +503,10 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( If there is no capacity left, resizes to twice the current capacity. Except for 0 capacity where it sets 1. """ - if self.size >= self.capacity: + if self._len >= self.capacity: self._realloc(self.capacity * 2 | Int(self.capacity == 0)) self._unsafe_next_uninit_ptr().init_pointee_move(value^) - self.size += 1 + self._len += 1 fn insert(mut self, i: Int, owned value: T): """Inserts a value to the list at the given index. @@ -512,7 +516,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( i: The index for the value. value: The value to insert. """ - debug_assert(i <= self.size, "insert index out of range") + debug_assert(i <= len(self), "insert index out of range") var normalized_idx = i if i < 0: @@ -573,7 +577,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # visible outside this function if a `__moveinit__()` constructor were # to throw (not currently possible AFAIK though) part way through the # logic below. - other.size = 0 + other._len = 0 var dest_ptr = self.data + len(self) @@ -590,7 +594,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( # Update the size now that all new elements have been moved into this # list. - self.size = final_size + self._len = final_size fn extend[ D: DType, // @@ -606,9 +610,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Notes: If there is no capacity left, resizes to `len(self) + value.size`. """ - self.reserve(self.size + value.size) + self.reserve(self._len + value.size) self._unsafe_next_uninit_ptr().store(value) - self.size += value.size + self._len += value.size fn extend[ D: DType, // @@ -627,10 +631,10 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( If there is no capacity left, resizes to `len(self) + count`. """ debug_assert(count <= value.size, "count must be <= value.size") - self.reserve(self.size + count) + self.reserve(self._len + count) var v_ptr = UnsafePointer.address_of(value).bitcast[Scalar[D]]() memcpy(self._unsafe_next_uninit_ptr(), v_ptr, count) - self.size += count + self._len += count fn extend[ D: DType, // @@ -646,9 +650,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Notes: If there is no capacity left, resizes to `len(self) + len(value)`. """ - self.reserve(self.size + len(value)) + self.reserve(self._len + len(value)) memcpy(self._unsafe_next_uninit_ptr(), value.unsafe_ptr(), len(value)) - self.size += len(value) + self._len += len(value) fn pop(mut self, i: Int = -1) -> T: """Pops a value from the list at the given index. @@ -659,17 +663,17 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Returns: The popped value. """ - debug_assert(-len(self) <= i < len(self), "pop index out of range") + debug_assert(-self._len <= i < self._len, "pop index out of range") var normalized_idx = i if i < 0: - normalized_idx += len(self) + normalized_idx += self._len var ret_val = (self.data + normalized_idx).take_pointee() - for j in range(normalized_idx + 1, self.size): + for j in range(normalized_idx + 1, self._len): (self.data + j).move_pointee_into(self.data + j - 1) - self.size -= 1 - if self.size * 4 < self.capacity: + self._len -= 1 + if self._len * 4 < self.capacity: if self.capacity > 1: self._realloc(self.capacity // 2) return ret_val^ @@ -698,13 +702,13 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( new_size: The new size. value: The value to use to populate new elements. """ - if new_size <= self.size: + if new_size <= self._len: self.resize(new_size) else: self.reserve(new_size) - for i in range(self.size, new_size): + for i in range(self._len, new_size): (self.data + i).init_pointee_copy(value) - self.size = new_size + self._len = new_size fn resize(mut self, new_size: Int): """Resizes the list to the given new size. @@ -715,16 +719,16 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( Args: new_size: The new size. """ - if self.size < new_size: + if len(self) < new_size: abort( "You are calling List.resize with a new_size bigger than the" " current size. If you want to make the List bigger, provide a" " value to fill the new slots with. If not, make sure the new" " size is smaller than the current size." ) - for i in range(new_size, self.size): + for i in range(new_size, len(self)): (self.data + i).destroy_pointee() - self.size = new_size + self._len = new_size self.reserve(new_size) fn reverse(mut self): @@ -831,9 +835,9 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn clear(mut self): """Clears the elements in the list.""" - for i in range(self.size): + for i in range(self._len): (self.data + i).destroy_pointee() - self.size = 0 + self._len = 0 fn steal_data(mut self) -> UnsafePointer[T]: """Take ownership of the underlying pointer from the list. @@ -843,7 +847,7 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( """ var ptr = self.data self.data = UnsafePointer[T]() - self.size = 0 + self._len = 0 self.capacity = 0 return ptr @@ -891,11 +895,11 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( else: var normalized_idx = Int(idx) debug_assert( - -self.size <= normalized_idx < self.size, + -self._len <= normalized_idx < self._len, "index: ", normalized_idx, - " is out of bounds for `List` of size: ", - self.size, + " is out of bounds for `List` of length: ", + self._len, ) if normalized_idx < 0: normalized_idx += len(self) @@ -1048,24 +1052,24 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( - This pointer MUST not be used to read or write memory beyond the allocated capacity of this list. - This pointer may not be used to initialize non-contiguous elements. - - Ensure that `List.size` is updated to reflect the new number of + - Ensure that `List._len` is updated to reflect the new number of initialized elements, otherwise elements may be unexpectedly overwritten or not destroyed correctly. """ debug_assert( - self.capacity > 0 and self.capacity > self.size, + self.capacity > 0 and self.capacity > self._len, ( "safety violation: Insufficient capacity to retrieve pointer to" " next uninitialized element" ), ) - return self.data + self.size + return self.data + self._len fn _cast_hint_trivial_type[ hint_trivial_type: Bool ](owned self) -> List[T, hint_trivial_type]: - var size = self.size + var size = self._len var capacity = self.capacity # TODO: Why doesn't `__disable_del self` work here? @@ -1078,18 +1082,3 @@ struct List[T: CollectionElement, hint_trivial_type: Bool = False]( fn _clip(value: Int, start: Int, end: Int) -> Int: return max(start, min(value, end)) - - -fn _move_pointee_into_many_elements[ - T: CollectionElement, //, hint_trivial_type: Bool -](dest: UnsafePointer[T], src: UnsafePointer[T], size: Int): - @parameter - if hint_trivial_type: - memcpy( - dest=dest.bitcast[Int8](), - src=src.bitcast[Int8](), - count=size * sizeof[T](), - ) - else: - for i in range(size): - (src + i).move_pointee_into(dest + i) diff --git a/stdlib/src/collections/optional.mojo b/mojo/stdlib/src/collections/optional.mojo similarity index 100% rename from stdlib/src/collections/optional.mojo rename to mojo/stdlib/src/collections/optional.mojo diff --git a/stdlib/src/collections/set.mojo b/mojo/stdlib/src/collections/set.mojo similarity index 100% rename from stdlib/src/collections/set.mojo rename to mojo/stdlib/src/collections/set.mojo diff --git a/stdlib/src/collections/string/__init__.mojo b/mojo/stdlib/src/collections/string/__init__.mojo similarity index 100% rename from stdlib/src/collections/string/__init__.mojo rename to mojo/stdlib/src/collections/string/__init__.mojo diff --git a/stdlib/src/collections/string/_unicode.mojo b/mojo/stdlib/src/collections/string/_unicode.mojo similarity index 93% rename from stdlib/src/collections/string/_unicode.mojo rename to mojo/stdlib/src/collections/string/_unicode.mojo index 4ec5cd280e..04613c373e 100644 --- a/stdlib/src/collections/string/_unicode.mojo +++ b/mojo/stdlib/src/collections/string/_unicode.mojo @@ -183,22 +183,21 @@ fn to_lowercase(s: StringSlice) -> String: ) var lowercase_char_opt = _get_lowercase_mapping(rune_and_size[0]) if lowercase_char_opt is None: - memcpy( - output._unsafe_next_uninit_ptr(), - input + input_offset, - rune_and_size[1], + output.extend( + Span[Byte, s.origin]( + ptr=input + input_offset, length=rune_and_size[1] + ) ) - output.size += rune_and_size[1] else: var lower_char: Codepoint = lowercase_char_opt.unsafe_value() - output.size += lower_char.unsafe_write_utf8( + output._len += lower_char.unsafe_write_utf8( output._unsafe_next_uninit_ptr() ) input_offset += rune_and_size[1] # Check if we need to reserve additional capacity. - if output.size >= output.capacity - 5: + if len(output) >= output.capacity - 5: output.reserve( output.capacity + _estimate_needed_size(s.byte_length() - input_offset) @@ -238,21 +237,20 @@ fn to_uppercase(s: StringSlice) -> String: ) for char_idx in range(count): var char: Codepoint = uppercase_replacement_chars[char_idx] - output.size += char.unsafe_write_utf8( + output._len += char.unsafe_write_utf8( output._unsafe_next_uninit_ptr() ) else: - memcpy( - output._unsafe_next_uninit_ptr(), - input + input_offset, - rune_and_size[1], + output.extend( + Span[Byte, s.origin]( + ptr=input + input_offset, length=rune_and_size[1] + ) ) - output.size += rune_and_size[1] input_offset += rune_and_size[1] # Check if we need to reserve additional capacity. - if output.size >= output.capacity - 5: + if len(output) >= output.capacity - 5: output.reserve( output.capacity + _estimate_needed_size(s.byte_length() - input_offset) diff --git a/stdlib/src/collections/string/_unicode_lookups.mojo b/mojo/stdlib/src/collections/string/_unicode_lookups.mojo similarity index 100% rename from stdlib/src/collections/string/_unicode_lookups.mojo rename to mojo/stdlib/src/collections/string/_unicode_lookups.mojo diff --git a/stdlib/src/collections/string/_utf8_validation.mojo b/mojo/stdlib/src/collections/string/_utf8_validation.mojo similarity index 100% rename from stdlib/src/collections/string/_utf8_validation.mojo rename to mojo/stdlib/src/collections/string/_utf8_validation.mojo diff --git a/stdlib/src/collections/string/codepoint.mojo b/mojo/stdlib/src/collections/string/codepoint.mojo similarity index 93% rename from stdlib/src/collections/string/codepoint.mojo rename to mojo/stdlib/src/collections/string/codepoint.mojo index d803684f73..1974d40318 100644 --- a/stdlib/src/collections/string/codepoint.mojo +++ b/mojo/stdlib/src/collections/string/codepoint.mojo @@ -18,6 +18,7 @@ from collections.string import StringSlice from bit import count_leading_zeros from memory import UnsafePointer +from sys.intrinsics import likely @always_inline @@ -285,7 +286,7 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): var buffer = List[Byte](capacity=char_len + 1) _ = self.unsafe_write_utf8(buffer.unsafe_ptr()) buffer.unsafe_ptr()[char_len] = 0 - buffer.size = char_len + 1 + buffer._len = char_len + 1 return String(buffer=buffer^) # ===-------------------------------------------------------------------===# @@ -450,13 +451,13 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): return self._scalar_value @always_inline - fn unsafe_write_utf8(self, ptr: UnsafePointer[Byte]) -> UInt: + fn unsafe_write_utf8[ + optimize_ascii: Bool = True + ](self, ptr: UnsafePointer[Byte]) -> UInt: """Shift unicode to utf8 representation. - Safety: - `ptr` MUST point to at least `self.utf8_byte_length()` allocated - bytes or else an out-of-bounds write will occur, which is undefined - behavior. + Parameters: + optimize_ascii: Optimize for languages with mostly ASCII characters. Args: ptr: Pointer value to write the encoded UTF-8 bytes. Must validly @@ -466,6 +467,11 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): Returns: Returns the number of bytes written. + Safety: + `ptr` MUST point to at least `self.utf8_byte_length()` allocated + bytes or else an out-of-bounds write will occur, which is undefined + behavior. + ### Unicode (represented as UInt32 BE) to UTF-8 conversion: - 1: 00000000 00000000 00000000 0aaaaaaa -> 0aaaaaaa - a @@ -483,18 +489,30 @@ struct Codepoint(CollectionElement, EqualityComparable, Intable, Stringable): var num_bytes = self.utf8_byte_length() - if num_bytes == 1: - ptr[0] = UInt8(c) - return 1 - - var shift = 6 * (num_bytes - 1) - var mask = UInt8(0xFF) >> UInt8(num_bytes + 1) - var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) - ptr[0] = ((c >> shift) & mask) | num_bytes_marker - for i in range(1, num_bytes): - shift -= 6 - ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 - + @parameter + if optimize_ascii: + # FIXME(#933): can't run LLVM intrinsic at compile time + # if likely(num_bytes == 1): + if num_bytes == 1: + ptr[0] = UInt8(c) + return 1 + var shift = 6 * (num_bytes - 1) + var mask = UInt8(0xFF) >> (num_bytes + 1) + var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) + ptr[0] = ((c >> shift) & mask) | num_bytes_marker + for i in range(1, num_bytes): + shift -= 6 + ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 + else: + var shift = 6 * (num_bytes - 1) + var mask = UInt8(0xFF) >> (num_bytes + Int(num_bytes > 1)) + var num_bytes_marker = UInt8(0xFF) << (8 - num_bytes) + ptr[0] = ((c >> shift) & mask) | ( + num_bytes_marker & -Int(num_bytes != 1) + ) + for i in range(1, num_bytes): + shift -= 6 + ptr[i] = ((c >> shift) & 0b0011_1111) | 0b1000_0000 return num_bytes @always_inline diff --git a/stdlib/src/collections/string/format.mojo b/mojo/stdlib/src/collections/string/format.mojo similarity index 99% rename from stdlib/src/collections/string/format.mojo rename to mojo/stdlib/src/collections/string/format.mojo index d1e8d34411..ec2935b9e5 100644 --- a/stdlib/src/collections/string/format.mojo +++ b/mojo/stdlib/src/collections/string/format.mojo @@ -147,9 +147,8 @@ struct _FormatCurlyEntry(CollectionElement, CollectionElementNew): entries, size_estimation = Self._create_entries(fmt_src, len_pos_args) var fmt_len = fmt_src.byte_length() var buf = String._buffer_type(capacity=fmt_len + size_estimation) - buf.size = 1 - buf.unsafe_set(0, 0) - var res = String(buf^) + buf.append(0) + var res = String(buffer=buf^) var offset = 0 var ptr = fmt_src.unsafe_ptr() alias S = StringSlice[StaticConstantOrigin] diff --git a/stdlib/src/collections/string/inline_string.mojo b/mojo/stdlib/src/collections/string/inline_string.mojo similarity index 100% rename from stdlib/src/collections/string/inline_string.mojo rename to mojo/stdlib/src/collections/string/inline_string.mojo diff --git a/stdlib/src/collections/string/string.mojo b/mojo/stdlib/src/collections/string/string.mojo similarity index 96% rename from stdlib/src/collections/string/string.mojo rename to mojo/stdlib/src/collections/string/string.mojo index 1681d58076..8411ef5388 100644 --- a/stdlib/src/collections/string/string.mojo +++ b/mojo/stdlib/src/collections/string/string.mojo @@ -94,8 +94,7 @@ fn chr(c: Int) -> String: Examples: ```mojo - print(chr(97)) # "a" - print(chr(8364)) # "€" + print(chr(97), chr(8364)) # "a €" ``` . """ @@ -762,7 +761,7 @@ struct String( bytes: The byte span to write to this String. Must NOT be null terminated. """ - self._iadd[False](bytes) + self._iadd(bytes) fn write[*Ts: Writable](mut self, *args: *Ts): """Write a sequence of Writable arguments to the provided Writer. @@ -855,7 +854,7 @@ struct String( if buff[-1]: buff.append(0) - return String(buff^) + return String(buffer=buff^) # ===------------------------------------------------------------------=== # # Operator dunders @@ -875,10 +874,7 @@ struct String( """ # TODO(#933): implement this for unicode when we support llvm intrinsic evaluation at compile time var normalized_idx = normalize_index["String"](idx, len(self)) - var buf = Self._buffer_type(capacity=1) - buf.append(self._buffer[normalized_idx]) - buf.append(0) - return String(buf^) + return String(buffer=Self._buffer_type(self._buffer[normalized_idx], 0)) fn __getitem__(self, span: Slice) -> String: """Gets the sequence of characters at the specified positions. @@ -903,14 +899,12 @@ struct String( ) ) - var buffer = Self._buffer_type() - var result_len = len(r) - buffer.resize(result_len + 1, 0) + var buffer = Self._buffer_type(capacity=len(r) + 1) var ptr = self.unsafe_ptr() - for i in range(result_len): - buffer[i] = ptr[r[i]] - buffer[result_len] = 0 - return Self(buffer^) + for i in r: + buffer.append(ptr[i]) + buffer.append(0) + return String(buffer=buffer^) @always_inline fn __eq__(self, other: String) -> Bool: @@ -996,27 +990,19 @@ struct String( return not (self < rhs) @staticmethod - fn _add[rhs_has_null: Bool](lhs: Span[Byte], rhs: Span[Byte]) -> String: + fn _add(lhs: Span[Byte], rhs: Span[Byte]) -> String: var lhs_len = len(lhs) var rhs_len = len(rhs) - var lhs_ptr = lhs.unsafe_ptr() - var rhs_ptr = rhs.unsafe_ptr() alias S = StringSlice[ImmutableAnyOrigin] if lhs_len == 0: - return String(S(ptr=rhs_ptr, length=rhs_len)) + return String(S(ptr=rhs.unsafe_ptr(), length=rhs_len)) elif rhs_len == 0: - return String(S(ptr=lhs_ptr, length=lhs_len)) - var sum_len = lhs_len + rhs_len - var buffer = Self._buffer_type(capacity=sum_len + 1) - var ptr = buffer.unsafe_ptr() - memcpy(ptr, lhs_ptr, lhs_len) - memcpy(ptr + lhs_len, rhs_ptr, rhs_len + Int(rhs_has_null)) - buffer.size = sum_len + 1 - - @parameter - if not rhs_has_null: - ptr[sum_len] = 0 - return Self(buffer^) + return String(S(ptr=lhs.unsafe_ptr(), length=lhs_len)) + var buffer = Self._buffer_type(capacity=lhs_len + rhs_len + 1) + buffer.extend(lhs) + buffer.extend(rhs) + buffer.append(0) + return String(buffer=buffer^) @always_inline fn __add__(self, other: StringSlice) -> String: @@ -1028,7 +1014,7 @@ struct String( Returns: The new constructed string. """ - return Self._add[False](self.as_bytes(), other.as_bytes()) + return Self._add(self.as_bytes(), other.as_bytes()) @always_inline fn __radd__(self, other: StringSlice) -> String: @@ -1040,27 +1026,17 @@ struct String( Returns: The new constructed string. """ - return Self._add[True](other.as_bytes(), self.as_bytes()) + return Self._add(other.as_bytes(), self.as_bytes()) - fn _iadd[has_null: Bool](mut self, other: Span[Byte]): - var s_len = self.byte_length() + fn _iadd(mut self, other: Span[Byte]): var o_len = len(other) - var o_ptr = other.unsafe_ptr() - if s_len == 0: - alias S = StringSlice[ImmutableAnyOrigin] - self = String(S(ptr=o_ptr, length=o_len)) - return - elif o_len == 0: + if o_len == 0: return - var sum_len = s_len + o_len - self._buffer.reserve(sum_len + 1) - var s_ptr = self.unsafe_ptr() - memcpy(s_ptr + s_len, o_ptr, o_len + Int(has_null)) - self._buffer.size = sum_len + 1 - - @parameter - if not has_null: - s_ptr[sum_len] = 0 + self._buffer.reserve(self.byte_length() + o_len + 1) + if len(self._buffer) > 0: + _ = self._buffer.pop() + self._buffer.extend(other) + self._buffer.append(0) @always_inline fn __iadd__(mut self, other: StringSlice): @@ -1069,7 +1045,7 @@ struct String( Args: other: The string to append. """ - self._iadd[False](other.as_bytes()) + self._iadd(other.as_bytes()) fn __iter__(self) -> CodepointSliceIter[__origin_of(self)]: """Iterate over the string unicode characters. @@ -1377,11 +1353,7 @@ struct String( Returns: The pointer to the underlying memory. """ - var ptr = self.unsafe_ptr() - self._buffer.data = UnsafePointer[UInt8]() - self._buffer.size = 0 - self._buffer.capacity = 0 - return ptr + return self._buffer.steal_data() fn count(self, substr: StringSlice) -> Int: """Return the number of non-overlapping occurrences of substring diff --git a/stdlib/src/collections/string/string_slice.mojo b/mojo/stdlib/src/collections/string/string_slice.mojo similarity index 98% rename from stdlib/src/collections/string/string_slice.mojo rename to mojo/stdlib/src/collections/string/string_slice.mojo index 533b365aba..593c6145cd 100644 --- a/stdlib/src/collections/string/string_slice.mojo +++ b/mojo/stdlib/src/collections/string/string_slice.mojo @@ -743,6 +743,10 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( Returns: A new StringSlice containing the substring at the specified positions. + + Raises: This function will raise if the specified slice start or end + position are outside the bounds of the string, or if they do not + both fall on codepoint boundaries. """ var step: Int var start: Int @@ -752,6 +756,20 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( if step != 1: raise Error("Slice must be within bounds and step must be 1") + if not self.is_codepoint_boundary(start): + var msg = String.format( + "String `Slice` start byte {} must fall on codepoint boundary.", + start, + ) + raise Error(msg^) + + if not self.is_codepoint_boundary(end): + var msg = String.format( + "String `Slice` end byte {} must fall on codepoint boundary.", + end, + ) + raise Error(msg^) + return Self(unsafe_from_utf8=self._slice[span]) # ===------------------------------------------------------------------===# @@ -920,15 +938,11 @@ struct StringSlice[mut: Bool, //, origin: Origin[mut]]( The string concatenated `n` times. """ - var len_self = self.byte_length() - var count = len_self * n + 1 - var buf = String._buffer_type(capacity=count) - buf.size = count - var b_ptr = buf.unsafe_ptr() + var buffer = List[Byte](capacity=self.byte_length() * n + 1) for i in range(n): - memcpy(b_ptr + len_self * i, self.unsafe_ptr(), len_self) - b_ptr[count - 1] = 0 - return String(buf^) + buffer.extend(self.as_bytes()) + buffer.append(0) + return String(buffer=buffer) # ===------------------------------------------------------------------===# # Methods @@ -2161,6 +2175,13 @@ fn _memmem[ return UnsafePointer[Scalar[type]]() +@always_inline +fn _is_utf8_continuation_byte[ + w: Int +](vec: SIMD[DType.uint8, w]) -> SIMD[DType.bool, w]: + return vec.cast[DType.int8]() < -(0b1000_0000 >> 1) + + fn _count_utf8_continuation_bytes(str_slice: StringSlice) -> Int: alias sizes = (256, 128, 64, 32, 16, 8) var ptr = str_slice.unsafe_ptr() @@ -2177,12 +2198,12 @@ fn _count_utf8_continuation_bytes(str_slice: StringSlice) -> Int: var rest = num_bytes - processed for _ in range(rest // s): var vec = (ptr + processed).load[width=s]() - var comp = (vec & 0b1100_0000) == 0b1000_0000 + var comp = _is_utf8_continuation_byte(vec) amnt += Int(comp.cast[DType.uint8]().reduce_add()) processed += s for i in range(num_bytes - processed): - amnt += Int((ptr[processed + i] & 0b1100_0000) == 0b1000_0000) + amnt += Int(_is_utf8_continuation_byte(ptr[processed + i])) return amnt @@ -2193,10 +2214,10 @@ fn _utf8_first_byte_sequence_length(b: Byte) -> Int: this does not work correctly if given a continuation byte.""" debug_assert( - (b & 0b1100_0000) != 0b1000_0000, + not _is_utf8_continuation_byte(b), "Function does not work correctly if given a continuation byte.", ) - return Int(count_leading_zeros(~b)) + Int(b < 0b1000_0000) + return Int(count_leading_zeros(~b) | (b < 0b1000_0000).cast[DType.uint8]()) fn _utf8_byte_type(b: SIMD[DType.uint8, _], /) -> __type_of(b): @@ -2213,7 +2234,7 @@ fn _utf8_byte_type(b: SIMD[DType.uint8, _], /) -> __type_of(b): - 3 -> start of 3 byte long sequence. - 4 -> start of 4 byte long sequence. """ - return count_leading_zeros(~(b & UInt8(0b1111_0000))) + return count_leading_zeros(~b) @always_inline diff --git a/stdlib/src/collections/vector.mojo b/mojo/stdlib/src/collections/vector.mojo similarity index 100% rename from stdlib/src/collections/vector.mojo rename to mojo/stdlib/src/collections/vector.mojo diff --git a/stdlib/src/documentation/__init__.mojo b/mojo/stdlib/src/documentation/__init__.mojo similarity index 100% rename from stdlib/src/documentation/__init__.mojo rename to mojo/stdlib/src/documentation/__init__.mojo diff --git a/stdlib/src/documentation/documentation.mojo b/mojo/stdlib/src/documentation/documentation.mojo similarity index 100% rename from stdlib/src/documentation/documentation.mojo rename to mojo/stdlib/src/documentation/documentation.mojo diff --git a/stdlib/src/hashlib/__init__.mojo b/mojo/stdlib/src/hashlib/__init__.mojo similarity index 100% rename from stdlib/src/hashlib/__init__.mojo rename to mojo/stdlib/src/hashlib/__init__.mojo diff --git a/stdlib/src/hashlib/_ahash.mojo b/mojo/stdlib/src/hashlib/_ahash.mojo similarity index 100% rename from stdlib/src/hashlib/_ahash.mojo rename to mojo/stdlib/src/hashlib/_ahash.mojo diff --git a/stdlib/src/hashlib/_hasher.mojo b/mojo/stdlib/src/hashlib/_hasher.mojo similarity index 100% rename from stdlib/src/hashlib/_hasher.mojo rename to mojo/stdlib/src/hashlib/_hasher.mojo diff --git a/stdlib/src/hashlib/hash.mojo b/mojo/stdlib/src/hashlib/hash.mojo similarity index 100% rename from stdlib/src/hashlib/hash.mojo rename to mojo/stdlib/src/hashlib/hash.mojo diff --git a/stdlib/src/math/__init__.mojo b/mojo/stdlib/src/math/__init__.mojo similarity index 100% rename from stdlib/src/math/__init__.mojo rename to mojo/stdlib/src/math/__init__.mojo diff --git a/stdlib/src/math/constants.mojo b/mojo/stdlib/src/math/constants.mojo similarity index 100% rename from stdlib/src/math/constants.mojo rename to mojo/stdlib/src/math/constants.mojo diff --git a/stdlib/src/math/math.mojo b/mojo/stdlib/src/math/math.mojo similarity index 100% rename from stdlib/src/math/math.mojo rename to mojo/stdlib/src/math/math.mojo diff --git a/stdlib/src/math/polynomial.mojo b/mojo/stdlib/src/math/polynomial.mojo similarity index 100% rename from stdlib/src/math/polynomial.mojo rename to mojo/stdlib/src/math/polynomial.mojo diff --git a/stdlib/src/memory/__init__.mojo b/mojo/stdlib/src/memory/__init__.mojo similarity index 100% rename from stdlib/src/memory/__init__.mojo rename to mojo/stdlib/src/memory/__init__.mojo diff --git a/stdlib/src/memory/arc.mojo b/mojo/stdlib/src/memory/arc.mojo similarity index 100% rename from stdlib/src/memory/arc.mojo rename to mojo/stdlib/src/memory/arc.mojo diff --git a/stdlib/src/memory/maybe_uninitialized.mojo b/mojo/stdlib/src/memory/maybe_uninitialized.mojo similarity index 100% rename from stdlib/src/memory/maybe_uninitialized.mojo rename to mojo/stdlib/src/memory/maybe_uninitialized.mojo diff --git a/stdlib/src/memory/memory.mojo b/mojo/stdlib/src/memory/memory.mojo similarity index 96% rename from stdlib/src/memory/memory.mojo rename to mojo/stdlib/src/memory/memory.mojo index eada6c0467..2d2d845f88 100644 --- a/stdlib/src/memory/memory.mojo +++ b/mojo/stdlib/src/memory/memory.mojo @@ -253,11 +253,21 @@ fn memcpy[ count: The number of elements to copy. """ var n = count * sizeof[dest.type]() - _memcpy_impl( - dest.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), - src.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), - n, - ) + + if __mlir_op.`kgen.is_compile_time`(): + # A fast version for the interpreter to evaluate + # this function during compile time. + llvm_intrinsic["llvm.memcpy", NoneType]( + dest.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + src.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + n, + ) + else: + _memcpy_impl( + dest.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + src.bitcast[Byte]().origin_cast[origin=MutableAnyOrigin](), + n, + ) # ===-----------------------------------------------------------------------===# diff --git a/stdlib/src/memory/owned_pointer.mojo b/mojo/stdlib/src/memory/owned_pointer.mojo similarity index 100% rename from stdlib/src/memory/owned_pointer.mojo rename to mojo/stdlib/src/memory/owned_pointer.mojo diff --git a/stdlib/src/memory/pointer.mojo b/mojo/stdlib/src/memory/pointer.mojo similarity index 100% rename from stdlib/src/memory/pointer.mojo rename to mojo/stdlib/src/memory/pointer.mojo diff --git a/stdlib/src/memory/span.mojo b/mojo/stdlib/src/memory/span.mojo similarity index 99% rename from stdlib/src/memory/span.mojo rename to mojo/stdlib/src/memory/span.mojo index 290c720f61..70a0482a52 100644 --- a/stdlib/src/memory/span.mojo +++ b/mojo/stdlib/src/memory/span.mojo @@ -166,7 +166,7 @@ struct Span[ list: The list to which the span refers. """ self._data = list.data.address_space_cast[address_space]() - self._len = list.size + self._len = list._len @always_inline @implicit diff --git a/stdlib/src/memory/unsafe.mojo b/mojo/stdlib/src/memory/unsafe.mojo similarity index 100% rename from stdlib/src/memory/unsafe.mojo rename to mojo/stdlib/src/memory/unsafe.mojo diff --git a/stdlib/src/memory/unsafe_pointer.mojo b/mojo/stdlib/src/memory/unsafe_pointer.mojo similarity index 100% rename from stdlib/src/memory/unsafe_pointer.mojo rename to mojo/stdlib/src/memory/unsafe_pointer.mojo diff --git a/stdlib/src/os/__init__.mojo b/mojo/stdlib/src/os/__init__.mojo similarity index 100% rename from stdlib/src/os/__init__.mojo rename to mojo/stdlib/src/os/__init__.mojo diff --git a/stdlib/src/os/_linux_aarch64.mojo b/mojo/stdlib/src/os/_linux_aarch64.mojo similarity index 100% rename from stdlib/src/os/_linux_aarch64.mojo rename to mojo/stdlib/src/os/_linux_aarch64.mojo diff --git a/stdlib/src/os/_linux_x86.mojo b/mojo/stdlib/src/os/_linux_x86.mojo similarity index 100% rename from stdlib/src/os/_linux_x86.mojo rename to mojo/stdlib/src/os/_linux_x86.mojo diff --git a/stdlib/src/os/_macos.mojo b/mojo/stdlib/src/os/_macos.mojo similarity index 100% rename from stdlib/src/os/_macos.mojo rename to mojo/stdlib/src/os/_macos.mojo diff --git a/stdlib/src/os/_windows.mojo b/mojo/stdlib/src/os/_windows.mojo similarity index 100% rename from stdlib/src/os/_windows.mojo rename to mojo/stdlib/src/os/_windows.mojo diff --git a/stdlib/src/os/atomic.mojo b/mojo/stdlib/src/os/atomic.mojo similarity index 100% rename from stdlib/src/os/atomic.mojo rename to mojo/stdlib/src/os/atomic.mojo diff --git a/stdlib/src/os/env.mojo b/mojo/stdlib/src/os/env.mojo similarity index 100% rename from stdlib/src/os/env.mojo rename to mojo/stdlib/src/os/env.mojo diff --git a/stdlib/src/os/fstat.mojo b/mojo/stdlib/src/os/fstat.mojo similarity index 100% rename from stdlib/src/os/fstat.mojo rename to mojo/stdlib/src/os/fstat.mojo diff --git a/stdlib/src/os/os.mojo b/mojo/stdlib/src/os/os.mojo similarity index 100% rename from stdlib/src/os/os.mojo rename to mojo/stdlib/src/os/os.mojo diff --git a/stdlib/src/os/path/__init__.mojo b/mojo/stdlib/src/os/path/__init__.mojo similarity index 100% rename from stdlib/src/os/path/__init__.mojo rename to mojo/stdlib/src/os/path/__init__.mojo diff --git a/stdlib/src/os/path/path.mojo b/mojo/stdlib/src/os/path/path.mojo similarity index 100% rename from stdlib/src/os/path/path.mojo rename to mojo/stdlib/src/os/path/path.mojo diff --git a/stdlib/src/os/pathlike.mojo b/mojo/stdlib/src/os/pathlike.mojo similarity index 100% rename from stdlib/src/os/pathlike.mojo rename to mojo/stdlib/src/os/pathlike.mojo diff --git a/stdlib/src/pathlib/__init__.mojo b/mojo/stdlib/src/pathlib/__init__.mojo similarity index 100% rename from stdlib/src/pathlib/__init__.mojo rename to mojo/stdlib/src/pathlib/__init__.mojo diff --git a/stdlib/src/pathlib/path.mojo b/mojo/stdlib/src/pathlib/path.mojo similarity index 99% rename from stdlib/src/pathlib/path.mojo rename to mojo/stdlib/src/pathlib/path.mojo index 38f8683dc5..ce5cff99fa 100644 --- a/stdlib/src/pathlib/path.mojo +++ b/mojo/stdlib/src/pathlib/path.mojo @@ -151,7 +151,7 @@ struct Path( Returns: A string representation of the path. """ - return String.write(self) + return self.path @always_inline fn __bool__(self) -> Bool: diff --git a/stdlib/src/prelude/__init__.mojo b/mojo/stdlib/src/prelude/__init__.mojo similarity index 100% rename from stdlib/src/prelude/__init__.mojo rename to mojo/stdlib/src/prelude/__init__.mojo diff --git a/stdlib/src/pwd/__init__.mojo b/mojo/stdlib/src/pwd/__init__.mojo similarity index 100% rename from stdlib/src/pwd/__init__.mojo rename to mojo/stdlib/src/pwd/__init__.mojo diff --git a/stdlib/src/pwd/_linux.mojo b/mojo/stdlib/src/pwd/_linux.mojo similarity index 100% rename from stdlib/src/pwd/_linux.mojo rename to mojo/stdlib/src/pwd/_linux.mojo diff --git a/stdlib/src/pwd/_macos.mojo b/mojo/stdlib/src/pwd/_macos.mojo similarity index 100% rename from stdlib/src/pwd/_macos.mojo rename to mojo/stdlib/src/pwd/_macos.mojo diff --git a/stdlib/src/pwd/pwd.mojo b/mojo/stdlib/src/pwd/pwd.mojo similarity index 100% rename from stdlib/src/pwd/pwd.mojo rename to mojo/stdlib/src/pwd/pwd.mojo diff --git a/stdlib/src/python/__init__.mojo b/mojo/stdlib/src/python/__init__.mojo similarity index 100% rename from stdlib/src/python/__init__.mojo rename to mojo/stdlib/src/python/__init__.mojo diff --git a/stdlib/src/python/_bindings.mojo b/mojo/stdlib/src/python/_bindings.mojo similarity index 100% rename from stdlib/src/python/_bindings.mojo rename to mojo/stdlib/src/python/_bindings.mojo diff --git a/stdlib/src/python/_cpython.mojo b/mojo/stdlib/src/python/_cpython.mojo similarity index 100% rename from stdlib/src/python/_cpython.mojo rename to mojo/stdlib/src/python/_cpython.mojo diff --git a/stdlib/src/python/python.mojo b/mojo/stdlib/src/python/python.mojo similarity index 100% rename from stdlib/src/python/python.mojo rename to mojo/stdlib/src/python/python.mojo diff --git a/stdlib/src/python/python_object.mojo b/mojo/stdlib/src/python/python_object.mojo similarity index 100% rename from stdlib/src/python/python_object.mojo rename to mojo/stdlib/src/python/python_object.mojo diff --git a/stdlib/src/random/__init__.mojo b/mojo/stdlib/src/random/__init__.mojo similarity index 100% rename from stdlib/src/random/__init__.mojo rename to mojo/stdlib/src/random/__init__.mojo diff --git a/stdlib/src/random/random.mojo b/mojo/stdlib/src/random/random.mojo similarity index 100% rename from stdlib/src/random/random.mojo rename to mojo/stdlib/src/random/random.mojo diff --git a/stdlib/src/stat/__init__.mojo b/mojo/stdlib/src/stat/__init__.mojo similarity index 100% rename from stdlib/src/stat/__init__.mojo rename to mojo/stdlib/src/stat/__init__.mojo diff --git a/stdlib/src/stat/stat.mojo b/mojo/stdlib/src/stat/stat.mojo similarity index 100% rename from stdlib/src/stat/stat.mojo rename to mojo/stdlib/src/stat/stat.mojo diff --git a/stdlib/src/sys/__init__.mojo b/mojo/stdlib/src/sys/__init__.mojo similarity index 100% rename from stdlib/src/sys/__init__.mojo rename to mojo/stdlib/src/sys/__init__.mojo diff --git a/stdlib/src/sys/_amdgpu.mojo b/mojo/stdlib/src/sys/_amdgpu.mojo similarity index 100% rename from stdlib/src/sys/_amdgpu.mojo rename to mojo/stdlib/src/sys/_amdgpu.mojo diff --git a/stdlib/src/sys/_assembly.mojo b/mojo/stdlib/src/sys/_assembly.mojo similarity index 100% rename from stdlib/src/sys/_assembly.mojo rename to mojo/stdlib/src/sys/_assembly.mojo diff --git a/stdlib/src/sys/_build.mojo b/mojo/stdlib/src/sys/_build.mojo similarity index 100% rename from stdlib/src/sys/_build.mojo rename to mojo/stdlib/src/sys/_build.mojo diff --git a/stdlib/src/sys/_io.mojo b/mojo/stdlib/src/sys/_io.mojo similarity index 100% rename from stdlib/src/sys/_io.mojo rename to mojo/stdlib/src/sys/_io.mojo diff --git a/stdlib/src/sys/_libc.mojo b/mojo/stdlib/src/sys/_libc.mojo similarity index 100% rename from stdlib/src/sys/_libc.mojo rename to mojo/stdlib/src/sys/_libc.mojo diff --git a/stdlib/src/sys/arg.mojo b/mojo/stdlib/src/sys/arg.mojo similarity index 100% rename from stdlib/src/sys/arg.mojo rename to mojo/stdlib/src/sys/arg.mojo diff --git a/stdlib/src/sys/compile.mojo b/mojo/stdlib/src/sys/compile.mojo similarity index 100% rename from stdlib/src/sys/compile.mojo rename to mojo/stdlib/src/sys/compile.mojo diff --git a/stdlib/src/sys/debug.mojo b/mojo/stdlib/src/sys/debug.mojo similarity index 100% rename from stdlib/src/sys/debug.mojo rename to mojo/stdlib/src/sys/debug.mojo diff --git a/stdlib/src/sys/ffi.mojo b/mojo/stdlib/src/sys/ffi.mojo similarity index 100% rename from stdlib/src/sys/ffi.mojo rename to mojo/stdlib/src/sys/ffi.mojo diff --git a/stdlib/src/sys/info.mojo b/mojo/stdlib/src/sys/info.mojo similarity index 99% rename from stdlib/src/sys/info.mojo rename to mojo/stdlib/src/sys/info.mojo index 79d13b199e..94bc5cee0e 100644 --- a/stdlib/src/sys/info.mojo +++ b/mojo/stdlib/src/sys/info.mojo @@ -575,7 +575,7 @@ fn simdbitwidth[ `#kgen.param.expr : index`, + `> : index`, ] ) diff --git a/stdlib/src/sys/intrinsics.mojo b/mojo/stdlib/src/sys/intrinsics.mojo similarity index 96% rename from stdlib/src/sys/intrinsics.mojo rename to mojo/stdlib/src/sys/intrinsics.mojo index 3aa5fabfef..25df3bc3e8 100644 --- a/stdlib/src/sys/intrinsics.mojo +++ b/mojo/stdlib/src/sys/intrinsics.mojo @@ -1307,3 +1307,45 @@ struct _ClusterIdx: alias cluster_idx = _ClusterIdx() + + +# ===-----------------------------------------------------------------------===# +# block_id_in_cluster +# ===-----------------------------------------------------------------------===# + + +@register_passable("trivial") +struct _Cluster_BlockIdx: + """_Cluster_BlockIdx provides static methods for getting the x/y/z coordinates of + a threadblock within a cluster.""" + + @always_inline("nodebug") + fn __init__(out self): + return + + @always_inline("nodebug") + @staticmethod + fn _get_intrinsic_name[dim: StringLiteral]() -> StringLiteral: + return "llvm.nvvm.read.ptx.sreg.cluster.ctaid." + dim + + @always_inline("nodebug") + fn __getattr__[dim: StringLiteral](self) -> UInt: + """Gets the `x`, `y`, or `z` coordinates of a threadblock within a cluster. + + Returns: + The `x`, `y`, or `z` coordinates of a threadblock within a cluster. + """ + constrained[ + is_nvidia_gpu() and _is_sm_9x(), + "cluster_id is only supported on NVIDIA SM90+ GPUs", + ]() + constrained[ + dim in ("x", "y", "z"), "the accessor must be either x, y, or z" + ]() + alias intrinsic_name = Self._get_intrinsic_name[dim]() + return UInt( + Int(llvm_intrinsic[intrinsic_name, UInt32, has_side_effect=False]()) + ) + + +alias block_id_in_cluster = _Cluster_BlockIdx() diff --git a/stdlib/src/sys/param_env.mojo b/mojo/stdlib/src/sys/param_env.mojo similarity index 100% rename from stdlib/src/sys/param_env.mojo rename to mojo/stdlib/src/sys/param_env.mojo diff --git a/stdlib/src/sys/terminate.mojo b/mojo/stdlib/src/sys/terminate.mojo similarity index 100% rename from stdlib/src/sys/terminate.mojo rename to mojo/stdlib/src/sys/terminate.mojo diff --git a/stdlib/src/tempfile/__init__.mojo b/mojo/stdlib/src/tempfile/__init__.mojo similarity index 100% rename from stdlib/src/tempfile/__init__.mojo rename to mojo/stdlib/src/tempfile/__init__.mojo diff --git a/stdlib/src/tempfile/tempfile.mojo b/mojo/stdlib/src/tempfile/tempfile.mojo similarity index 100% rename from stdlib/src/tempfile/tempfile.mojo rename to mojo/stdlib/src/tempfile/tempfile.mojo diff --git a/stdlib/src/testing/__init__.mojo b/mojo/stdlib/src/testing/__init__.mojo similarity index 100% rename from stdlib/src/testing/__init__.mojo rename to mojo/stdlib/src/testing/__init__.mojo diff --git a/stdlib/src/testing/testing.mojo b/mojo/stdlib/src/testing/testing.mojo similarity index 100% rename from stdlib/src/testing/testing.mojo rename to mojo/stdlib/src/testing/testing.mojo diff --git a/stdlib/src/time/__init__.mojo b/mojo/stdlib/src/time/__init__.mojo similarity index 100% rename from stdlib/src/time/__init__.mojo rename to mojo/stdlib/src/time/__init__.mojo diff --git a/stdlib/src/time/time.mojo b/mojo/stdlib/src/time/time.mojo similarity index 100% rename from stdlib/src/time/time.mojo rename to mojo/stdlib/src/time/time.mojo diff --git a/stdlib/src/utils/__init__.mojo b/mojo/stdlib/src/utils/__init__.mojo similarity index 100% rename from stdlib/src/utils/__init__.mojo rename to mojo/stdlib/src/utils/__init__.mojo diff --git a/stdlib/src/utils/_select.mojo b/mojo/stdlib/src/utils/_select.mojo similarity index 100% rename from stdlib/src/utils/_select.mojo rename to mojo/stdlib/src/utils/_select.mojo diff --git a/stdlib/src/utils/_serialize.mojo b/mojo/stdlib/src/utils/_serialize.mojo similarity index 100% rename from stdlib/src/utils/_serialize.mojo rename to mojo/stdlib/src/utils/_serialize.mojo diff --git a/stdlib/src/utils/_visualizers.mojo b/mojo/stdlib/src/utils/_visualizers.mojo similarity index 100% rename from stdlib/src/utils/_visualizers.mojo rename to mojo/stdlib/src/utils/_visualizers.mojo diff --git a/stdlib/src/utils/index.mojo b/mojo/stdlib/src/utils/index.mojo similarity index 99% rename from stdlib/src/utils/index.mojo rename to mojo/stdlib/src/utils/index.mojo index 47649ecd2a..67b13ce702 100644 --- a/stdlib/src/utils/index.mojo +++ b/mojo/stdlib/src/utils/index.mojo @@ -1086,7 +1086,7 @@ fn Index[ @always_inline -fn product[size: Int](tuple: IndexList[size, **_], end_idx: Int) -> Int: +fn product[size: Int](tuple: IndexList[size, **_], end_idx: Int = size) -> Int: """Computes a product of values in the tuple up to the given index. Parameters: diff --git a/stdlib/src/utils/lock.mojo b/mojo/stdlib/src/utils/lock.mojo similarity index 100% rename from stdlib/src/utils/lock.mojo rename to mojo/stdlib/src/utils/lock.mojo diff --git a/stdlib/src/utils/loop.mojo b/mojo/stdlib/src/utils/loop.mojo similarity index 100% rename from stdlib/src/utils/loop.mojo rename to mojo/stdlib/src/utils/loop.mojo diff --git a/stdlib/src/utils/numerics.mojo b/mojo/stdlib/src/utils/numerics.mojo similarity index 96% rename from stdlib/src/utils/numerics.mojo rename to mojo/stdlib/src/utils/numerics.mojo index 5490eaea86..b79d12eb11 100644 --- a/stdlib/src/utils/numerics.mojo +++ b/mojo/stdlib/src/utils/numerics.mojo @@ -1028,24 +1028,49 @@ fn isfinite[ @always_inline -fn get_accum_type[type: DType]() -> DType: +fn get_accum_type[ + type: DType, *, preferred_accum_type: DType = DType.float32 +]() -> DType: """Returns the recommended type for accumulation operations. - Half precision types can introduce numerical error if they are used + Half precision and float8 types can introduce numerical error if they are used in reduction/accumulation operations. This method returns a higher precision type to use for accumulation if a half precision types is provided, otherwise it returns the original type. + The rules are as follows: + - If the type is a float8 type, return a float16 type. + - If the type is a bfloat16 precision type, return a float32 type. + - If the type is a float16 precision type, return a float32 type if the + preferred_accum_type is float32, otherwise return a float16 type. + - Otherwise, return the original type. + Parameters: type: The type of some accumulation operation. + preferred_accum_type: The preferred type for accumulation. Returns: DType.float32 if type is a half-precision float, type otherwise. """ - return DType.float32 if ( - type.is_half_float() or type in (DType.float8_e4m3fn, DType.float8_e5m2) - ) else type + @parameter + if type.is_float8(): + if preferred_accum_type is DType.float32: + return preferred_accum_type + else: + return DType.float16 + elif type is DType.bfloat16: + return DType.float32 + elif type is DType.float16: + # fp16 accumulation can be done in fp16 or fp32. Use fp16 by default for better + # performance and use fp32 only when it's specified via preferred type. + @parameter + if preferred_accum_type is DType.float32: + return preferred_accum_type + else: + return DType.float16 + else: + return type # ===----------------------------------------------------------------------=== # diff --git a/stdlib/src/utils/static_tuple.mojo b/mojo/stdlib/src/utils/static_tuple.mojo similarity index 100% rename from stdlib/src/utils/static_tuple.mojo rename to mojo/stdlib/src/utils/static_tuple.mojo diff --git a/stdlib/src/utils/variant.mojo b/mojo/stdlib/src/utils/variant.mojo similarity index 100% rename from stdlib/src/utils/variant.mojo rename to mojo/stdlib/src/utils/variant.mojo diff --git a/stdlib/src/utils/write.mojo b/mojo/stdlib/src/utils/write.mojo similarity index 100% rename from stdlib/src/utils/write.mojo rename to mojo/stdlib/src/utils/write.mojo diff --git a/stdlib/test/base64/test_base64.mojo b/mojo/stdlib/test/base64/test_base64.mojo similarity index 100% rename from stdlib/test/base64/test_base64.mojo rename to mojo/stdlib/test/base64/test_base64.mojo diff --git a/stdlib/test/bit/test_bit.mojo b/mojo/stdlib/test/bit/test_bit.mojo similarity index 100% rename from stdlib/test/bit/test_bit.mojo rename to mojo/stdlib/test/bit/test_bit.mojo diff --git a/stdlib/test/builtin/test_any_all.mojo b/mojo/stdlib/test/builtin/test_any_all.mojo similarity index 100% rename from stdlib/test/builtin/test_any_all.mojo rename to mojo/stdlib/test/builtin/test_any_all.mojo diff --git a/stdlib/test/builtin/test_bfloat16.mojo b/mojo/stdlib/test/builtin/test_bfloat16.mojo similarity index 100% rename from stdlib/test/builtin/test_bfloat16.mojo rename to mojo/stdlib/test/builtin/test_bfloat16.mojo diff --git a/stdlib/test/builtin/test_bool.mojo b/mojo/stdlib/test/builtin/test_bool.mojo similarity index 100% rename from stdlib/test/builtin/test_bool.mojo rename to mojo/stdlib/test/builtin/test_bool.mojo diff --git a/stdlib/test/builtin/test_debug_assert.mojo b/mojo/stdlib/test/builtin/test_debug_assert.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert.mojo rename to mojo/stdlib/test/builtin/test_debug_assert.mojo diff --git a/stdlib/test/builtin/test_debug_assert_default_error.mojo b/mojo/stdlib/test/builtin/test_debug_assert_default_error.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_default_error.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_default_error.mojo diff --git a/stdlib/test/builtin/test_debug_assert_mode_all.mojo b/mojo/stdlib/test/builtin/test_debug_assert_mode_all.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_mode_all.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_mode_all.mojo diff --git a/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo b/mojo/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_mode_all_error.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_mode_all_error.mojo diff --git a/stdlib/test/builtin/test_debug_assert_mode_none.mojo b/mojo/stdlib/test/builtin/test_debug_assert_mode_none.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_mode_none.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_mode_none.mojo diff --git a/stdlib/test/builtin/test_debug_assert_warning.mojo b/mojo/stdlib/test/builtin/test_debug_assert_warning.mojo similarity index 100% rename from stdlib/test/builtin/test_debug_assert_warning.mojo rename to mojo/stdlib/test/builtin/test_debug_assert_warning.mojo diff --git a/stdlib/test/builtin/test_deprecation_warnings.mojo b/mojo/stdlib/test/builtin/test_deprecation_warnings.mojo similarity index 100% rename from stdlib/test/builtin/test_deprecation_warnings.mojo rename to mojo/stdlib/test/builtin/test_deprecation_warnings.mojo diff --git a/stdlib/test/builtin/test_dtype.mojo b/mojo/stdlib/test/builtin/test_dtype.mojo similarity index 100% rename from stdlib/test/builtin/test_dtype.mojo rename to mojo/stdlib/test/builtin/test_dtype.mojo diff --git a/stdlib/test/builtin/test_error.mojo b/mojo/stdlib/test/builtin/test_error.mojo similarity index 100% rename from stdlib/test/builtin/test_error.mojo rename to mojo/stdlib/test/builtin/test_error.mojo diff --git a/stdlib/test/builtin/test_file.mojo b/mojo/stdlib/test/builtin/test_file.mojo similarity index 100% rename from stdlib/test/builtin/test_file.mojo rename to mojo/stdlib/test/builtin/test_file.mojo diff --git a/stdlib/test/builtin/test_file_dummy_input.txt b/mojo/stdlib/test/builtin/test_file_dummy_input.txt similarity index 100% rename from stdlib/test/builtin/test_file_dummy_input.txt rename to mojo/stdlib/test/builtin/test_file_dummy_input.txt diff --git a/stdlib/test/builtin/test_float_literal.mojo b/mojo/stdlib/test/builtin/test_float_literal.mojo similarity index 76% rename from stdlib/test/builtin/test_float_literal.mojo rename to mojo/stdlib/test/builtin/test_float_literal.mojo index c90950a1df..915c1f850e 100644 --- a/stdlib/test/builtin/test_float_literal.mojo +++ b/mojo/stdlib/test/builtin/test_float_literal.mojo @@ -26,48 +26,6 @@ alias inf = FloatLiteral.infinity alias neg_inf = FloatLiteral.negative_infinity -def test_ceil(): - assert_equal(FloatLiteral.__ceil__(1.5), 2.0) - assert_equal(FloatLiteral.__ceil__(1.4), 2.0) - assert_equal(FloatLiteral.__ceil__(-1.5), -1.0) - assert_equal(FloatLiteral.__ceil__(-3.6), -3.0) - assert_equal(FloatLiteral.__ceil__(3.0), 3.0) - assert_equal(FloatLiteral.__ceil__(0.0), 0.0) - - assert_true(FloatLiteral.__ceil__(nan).is_nan()) - assert_true(FloatLiteral.__ceil__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__ceil__(inf), inf) - assert_equal(FloatLiteral.__ceil__(neg_inf), neg_inf) - - -def test_floor(): - assert_equal(FloatLiteral.__floor__(1.5), 1.0) - assert_equal(FloatLiteral.__floor__(1.6), 1.0) - assert_equal(FloatLiteral.__floor__(-1.5), -2.0) - assert_equal(FloatLiteral.__floor__(-3.4), -4.0) - assert_equal(FloatLiteral.__floor__(3.0), 3.0) - assert_equal(FloatLiteral.__floor__(0.0), 0.0) - - assert_true(FloatLiteral.__floor__(nan).is_nan()) - assert_true(FloatLiteral.__floor__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__floor__(inf), inf) - assert_equal(FloatLiteral.__floor__(neg_inf), neg_inf) - - -def test_trunc(): - assert_equal(FloatLiteral.__trunc__(1.5), 1.0) - assert_equal(FloatLiteral.__trunc__(1.6), 1.0) - assert_equal(FloatLiteral.__trunc__(-1.5), -1.0) - assert_equal(FloatLiteral.__trunc__(-3.6), -3.0) - assert_equal(FloatLiteral.__trunc__(3.0), 3.0) - assert_equal(FloatLiteral.__trunc__(0.0), 0.0) - - assert_true(FloatLiteral.__trunc__(nan).is_nan()) - assert_true(FloatLiteral.__trunc__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__trunc__(inf), inf) - assert_equal(FloatLiteral.__trunc__(neg_inf), neg_inf) - - def test_division(): assert_equal(FloatLiteral.__truediv__(4.4, 0.5), 8.8) @@ -107,15 +65,13 @@ def test_is_special_value(): def test_abs(): - assert_equal((-4.4).__abs__(), 4.4) - assert_equal((4.4).__abs__(), 4.4) - assert_equal((0.0).__abs__(), 0.0) + assert_equal(abs(-4.4), 4.4) + assert_equal(abs(4.4), 4.4) + assert_equal(abs(0.0), 0.0) - assert_true(FloatLiteral.__abs__(nan).is_nan()) - assert_false(FloatLiteral.__abs__(neg_zero).is_neg_zero()) - assert_equal(FloatLiteral.__abs__(neg_zero), 0.0) - assert_equal(FloatLiteral.__abs__(inf), inf) - assert_equal(FloatLiteral.__abs__(neg_inf), inf) + assert_equal(abs(neg_zero), 0.0) + assert_equal(abs(inf), inf) + assert_equal(abs(neg_inf), inf) def test_comparison(): @@ -218,9 +174,6 @@ def test_float_conversion(): def main(): - test_ceil() - test_floor() - test_trunc() test_division() test_mod() test_int_conversion() diff --git a/stdlib/test/builtin/test_format_float.mojo b/mojo/stdlib/test/builtin/test_format_float.mojo similarity index 100% rename from stdlib/test/builtin/test_format_float.mojo rename to mojo/stdlib/test/builtin/test_format_float.mojo diff --git a/stdlib/test/builtin/test_format_int.mojo b/mojo/stdlib/test/builtin/test_format_int.mojo similarity index 100% rename from stdlib/test/builtin/test_format_int.mojo rename to mojo/stdlib/test/builtin/test_format_int.mojo diff --git a/stdlib/test/builtin/test_int.mojo b/mojo/stdlib/test/builtin/test_int.mojo similarity index 100% rename from stdlib/test/builtin/test_int.mojo rename to mojo/stdlib/test/builtin/test_int.mojo diff --git a/stdlib/test/builtin/test_int_literal.mojo b/mojo/stdlib/test/builtin/test_int_literal.mojo similarity index 96% rename from stdlib/test/builtin/test_int_literal.mojo rename to mojo/stdlib/test/builtin/test_int_literal.mojo index 87ee610509..ce9c5be4a5 100644 --- a/stdlib/test/builtin/test_int_literal.mojo +++ b/mojo/stdlib/test/builtin/test_int_literal.mojo @@ -69,9 +69,9 @@ def test_mod(): def test_abs(): - assert_equal(IntLiteral.__abs__(-5), 5) - assert_equal(IntLiteral.__abs__(2), 2) - assert_equal(IntLiteral.__abs__(0), 0) + assert_equal(abs(-5), 5) + assert_equal(abs(2), 2) + assert_equal(abs(0), 0) def test_indexer(): diff --git a/stdlib/test/builtin/test_issue_1004.mojo b/mojo/stdlib/test/builtin/test_issue_1004.mojo similarity index 93% rename from stdlib/test/builtin/test_issue_1004.mojo rename to mojo/stdlib/test/builtin/test_issue_1004.mojo index e80c944316..391205de72 100644 --- a/stdlib/test/builtin/test_issue_1004.mojo +++ b/mojo/stdlib/test/builtin/test_issue_1004.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -# Test for https://github.com/modular/mojo/issues/1004 +# Test for https://github.com/modular/max/issues/1004 from testing import assert_equal diff --git a/stdlib/test/builtin/test_issue_1505.mojo b/mojo/stdlib/test/builtin/test_issue_1505.mojo similarity index 97% rename from stdlib/test/builtin/test_issue_1505.mojo rename to mojo/stdlib/test/builtin/test_issue_1505.mojo index 712c1d9c0c..43eb2b764d 100644 --- a/stdlib/test/builtin/test_issue_1505.mojo +++ b/mojo/stdlib/test/builtin/test_issue_1505.mojo @@ -11,7 +11,7 @@ # limitations under the License. # ===----------------------------------------------------------------------=== # # RUN: %mojo %s -# Test for https://github.com/modular/mojo/issues/1505 +# Test for https://github.com/modular/max/issues/1505 from random import random_ui64 diff --git a/stdlib/test/builtin/test_issue_3908.mojo b/mojo/stdlib/test/builtin/test_issue_3908.mojo similarity index 100% rename from stdlib/test/builtin/test_issue_3908.mojo rename to mojo/stdlib/test/builtin/test_issue_3908.mojo diff --git a/stdlib/test/builtin/test_list_literal.mojo b/mojo/stdlib/test/builtin/test_list_literal.mojo similarity index 100% rename from stdlib/test/builtin/test_list_literal.mojo rename to mojo/stdlib/test/builtin/test_list_literal.mojo diff --git a/stdlib/test/builtin/test_location.mojo b/mojo/stdlib/test/builtin/test_location.mojo similarity index 100% rename from stdlib/test/builtin/test_location.mojo rename to mojo/stdlib/test/builtin/test_location.mojo diff --git a/stdlib/test/builtin/test_math.mojo b/mojo/stdlib/test/builtin/test_math.mojo similarity index 91% rename from stdlib/test/builtin/test_math.mojo rename to mojo/stdlib/test/builtin/test_math.mojo index 0667b86cc5..28e29f2ddf 100644 --- a/stdlib/test/builtin/test_math.mojo +++ b/mojo/stdlib/test/builtin/test_math.mojo @@ -13,6 +13,7 @@ # RUN: %mojo %s from testing import assert_equal +from utils.numerics import isnan def test_abs(): @@ -122,6 +123,15 @@ def test_pow(): assert_equal(pow(I(0, 1, 2, 3), Int(2)), I(0, 1, 4, 9)) +def test_isnan(): + # Check that we can run llvm intrinsics returning bool at comptime. + alias x1 = isnan(SIMD[DType.float32, 4](SIMD[DType.float64, 4](1.0))) + assert_equal(x1, False) + + alias x2 = isnan(SIMD[DType.float32, 4](FloatLiteral.nan)) + assert_equal(x2, True) + + def main(): test_abs() test_divmod() @@ -129,3 +139,4 @@ def main(): test_min() test_round() test_pow() + test_isnan() diff --git a/stdlib/test/builtin/test_none.mojo b/mojo/stdlib/test/builtin/test_none.mojo similarity index 100% rename from stdlib/test/builtin/test_none.mojo rename to mojo/stdlib/test/builtin/test_none.mojo diff --git a/stdlib/test/builtin/test_object.mojo b/mojo/stdlib/test/builtin/test_object.mojo similarity index 100% rename from stdlib/test/builtin/test_object.mojo rename to mojo/stdlib/test/builtin/test_object.mojo diff --git a/stdlib/test/builtin/test_print.mojo b/mojo/stdlib/test/builtin/test_print.mojo similarity index 100% rename from stdlib/test/builtin/test_print.mojo rename to mojo/stdlib/test/builtin/test_print.mojo diff --git a/stdlib/test/builtin/test_print_long_string.mojo b/mojo/stdlib/test/builtin/test_print_long_string.mojo similarity index 100% rename from stdlib/test/builtin/test_print_long_string.mojo rename to mojo/stdlib/test/builtin/test_print_long_string.mojo diff --git a/stdlib/test/builtin/test_print_stderr.mojo b/mojo/stdlib/test/builtin/test_print_stderr.mojo similarity index 100% rename from stdlib/test/builtin/test_print_stderr.mojo rename to mojo/stdlib/test/builtin/test_print_stderr.mojo diff --git a/stdlib/test/builtin/test_range.mojo b/mojo/stdlib/test/builtin/test_range.mojo similarity index 100% rename from stdlib/test/builtin/test_range.mojo rename to mojo/stdlib/test/builtin/test_range.mojo diff --git a/stdlib/test/builtin/test_range_out_of_bounds.mojo b/mojo/stdlib/test/builtin/test_range_out_of_bounds.mojo similarity index 100% rename from stdlib/test/builtin/test_range_out_of_bounds.mojo rename to mojo/stdlib/test/builtin/test_range_out_of_bounds.mojo diff --git a/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo b/mojo/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo similarity index 100% rename from stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo rename to mojo/stdlib/test/builtin/test_range_uint_reverse_range_bad.mojo diff --git a/stdlib/test/builtin/test_rebind.mojo b/mojo/stdlib/test/builtin/test_rebind.mojo similarity index 100% rename from stdlib/test/builtin/test_rebind.mojo rename to mojo/stdlib/test/builtin/test_rebind.mojo diff --git a/stdlib/test/builtin/test_repr.mojo b/mojo/stdlib/test/builtin/test_repr.mojo similarity index 100% rename from stdlib/test/builtin/test_repr.mojo rename to mojo/stdlib/test/builtin/test_repr.mojo diff --git a/stdlib/test/builtin/test_reversed.mojo b/mojo/stdlib/test/builtin/test_reversed.mojo similarity index 100% rename from stdlib/test/builtin/test_reversed.mojo rename to mojo/stdlib/test/builtin/test_reversed.mojo diff --git a/stdlib/test/builtin/test_simd.mojo b/mojo/stdlib/test/builtin/test_simd.mojo similarity index 99% rename from stdlib/test/builtin/test_simd.mojo rename to mojo/stdlib/test/builtin/test_simd.mojo index 184627c5b7..e48370e2d1 100644 --- a/stdlib/test/builtin/test_simd.mojo +++ b/mojo/stdlib/test/builtin/test_simd.mojo @@ -119,7 +119,7 @@ def test_convert_simd_to_string(): var c: SIMD[DType.index, 8] = 7 assert_equal(String(c), "[7, 7, 7, 7, 7, 7, 7, 7]") - # TODO: uncomment when https://github.com/modular/mojo/issues/2353 is fixed + # TODO: uncomment when https://github.com/modular/max/issues/2353 is fixed # assert_equal(String(UInt32(-1)), "4294967295") assert_equal(String(UInt64(-1)), "18446744073709551615") @@ -129,7 +129,7 @@ def test_convert_simd_to_string(): assert_equal(String(UInt64(16646288086500911323)), "16646288086500911323") - # https://github.com/modular/mojo/issues/556 + # https://github.com/modular/max/issues/556 assert_equal( String( SIMD[DType.uint64, 4]( diff --git a/stdlib/test/builtin/test_slice.mojo b/mojo/stdlib/test/builtin/test_slice.mojo similarity index 100% rename from stdlib/test/builtin/test_slice.mojo rename to mojo/stdlib/test/builtin/test_slice.mojo diff --git a/stdlib/test/builtin/test_sort.mojo b/mojo/stdlib/test/builtin/test_sort.mojo similarity index 100% rename from stdlib/test/builtin/test_sort.mojo rename to mojo/stdlib/test/builtin/test_sort.mojo diff --git a/stdlib/test/builtin/test_sort_issue_1018.mojo b/mojo/stdlib/test/builtin/test_sort_issue_1018.mojo similarity index 100% rename from stdlib/test/builtin/test_sort_issue_1018.mojo rename to mojo/stdlib/test/builtin/test_sort_issue_1018.mojo diff --git a/stdlib/test/builtin/test_stdin.mojo b/mojo/stdlib/test/builtin/test_stdin.mojo similarity index 100% rename from stdlib/test/builtin/test_stdin.mojo rename to mojo/stdlib/test/builtin/test_stdin.mojo diff --git a/stdlib/test/builtin/test_str.mojo b/mojo/stdlib/test/builtin/test_str.mojo similarity index 100% rename from stdlib/test/builtin/test_str.mojo rename to mojo/stdlib/test/builtin/test_str.mojo diff --git a/stdlib/test/builtin/test_string_literal.mojo b/mojo/stdlib/test/builtin/test_string_literal.mojo similarity index 95% rename from stdlib/test/builtin/test_string_literal.mojo rename to mojo/stdlib/test/builtin/test_string_literal.mojo index 57c34ca446..bee3b115ed 100644 --- a/stdlib/test/builtin/test_string_literal.mojo +++ b/mojo/stdlib/test/builtin/test_string_literal.mojo @@ -23,6 +23,12 @@ from testing import ( assert_true, ) from collections.string import StringSlice +from builtin.string_literal import ( + _base64_encode, + _base64_decode, + _compress, + _decompress, +) def test_add(): @@ -547,6 +553,24 @@ def test_string_literal_from_stringable(): ) +def test_base64_encode_decode(): + assert_equal(_base64_encode["hello"](), "aGVsbG8=") + assert_equal(_base64_decode["aGVsbG8="](), "hello") + + alias encoded = _base64_encode["I'm a mojo string"]() + alias decoded = _base64_decode[encoded]() + assert_equal(decoded, "I'm a mojo string") + + +def test_compress_decompress(): + alias compressed = _compress["hello"]() + alias decompressed = _decompress[compressed]() + alias compressed_base64 = _base64_encode[compressed]() + assert_equal(compressed_base64, "eNrLSM3JyQcABiwCFQ==") + assert_equal(len(compressed), 13) + assert_equal(decompressed, "hello") + + def main(): test_add() test_iadd() @@ -580,3 +604,5 @@ def main(): test_splitlines() test_float_conversion() test_string_literal_from_stringable() + test_base64_encode_decode() + test_compress_decompress() diff --git a/stdlib/test/builtin/test_swap.mojo b/mojo/stdlib/test/builtin/test_swap.mojo similarity index 100% rename from stdlib/test/builtin/test_swap.mojo rename to mojo/stdlib/test/builtin/test_swap.mojo diff --git a/stdlib/test/builtin/test_tuple.mojo b/mojo/stdlib/test/builtin/test_tuple.mojo similarity index 100% rename from stdlib/test/builtin/test_tuple.mojo rename to mojo/stdlib/test/builtin/test_tuple.mojo diff --git a/stdlib/test/builtin/test_uint.mojo b/mojo/stdlib/test/builtin/test_uint.mojo similarity index 100% rename from stdlib/test/builtin/test_uint.mojo rename to mojo/stdlib/test/builtin/test_uint.mojo diff --git a/stdlib/test/builtin/test_uint_error.mojo b/mojo/stdlib/test/builtin/test_uint_error.mojo similarity index 100% rename from stdlib/test/builtin/test_uint_error.mojo rename to mojo/stdlib/test/builtin/test_uint_error.mojo diff --git a/stdlib/test/collections/string/test_inlined_string.mojo b/mojo/stdlib/test/collections/string/test_inlined_string.mojo similarity index 100% rename from stdlib/test/collections/string/test_inlined_string.mojo rename to mojo/stdlib/test/collections/string/test_inlined_string.mojo diff --git a/stdlib/test/collections/string/test_string.mojo b/mojo/stdlib/test/collections/string/test_string.mojo similarity index 99% rename from stdlib/test/collections/string/test_string.mojo rename to mojo/stdlib/test/collections/string/test_string.mojo index 5f91c3e7c4..e24129dd55 100644 --- a/stdlib/test/collections/string/test_string.mojo +++ b/mojo/stdlib/test/collections/string/test_string.mojo @@ -263,6 +263,7 @@ def test_ord(): def test_chr(): + assert_equal("\0", chr(0)) assert_equal("A", chr(65)) assert_equal("a", chr(97)) assert_equal("!", chr(33)) diff --git a/stdlib/test/collections/string/test_string_slice.mojo b/mojo/stdlib/test/collections/string/test_string_slice.mojo similarity index 88% rename from stdlib/test/collections/string/test_string_slice.mojo rename to mojo/stdlib/test/collections/string/test_string_slice.mojo index 80488f7b44..4c6e8b2a0b 100644 --- a/stdlib/test/collections/string/test_string_slice.mojo +++ b/mojo/stdlib/test/collections/string/test_string_slice.mojo @@ -22,6 +22,37 @@ from sys.info import alignof, sizeof from memory import Span, UnsafePointer from testing import assert_equal, assert_false, assert_raises, assert_true +# ===----------------------------------------------------------------------=== # +# Reusable testing data +# ===----------------------------------------------------------------------=== # + +alias EVERY_CODEPOINT_LENGTH_STR = StringSlice("߷കൈ🔄!") +"""A string that contains at least one of 1-, 2-, 3-, and 4-byte UTF-8 +sequences. + +Visualized as: + +```text +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ ߷കൈ🔄! ┃ +┣━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━┫ +┃ ߷ ┃ ക ┃ ൈ ┃ 🔄 ┃! ┃ +┣━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━╋━━━━━━━━━━━━━━━╋━━┫ +┃ 2039 ┃ 3349 ┃ 3400 ┃ 128260 ┃33┃ +┣━━━┳━━━╋━━━┳━━━┳━━━╋━━━┳━━━┳━━━╋━━━┳━━━┳━━━┳━━━╋━━┫ +┃223┃183┃224┃180┃149┃224┃181┃136┃240┃159┃148┃132┃33┃ +┗━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┛ + 0 1 2 3 4 5 6 7 8 9 10 11 12 +``` + +For further visualization and analysis involving this sequence, see: +. +""" + +# ===----------------------------------------------------------------------=== # +# Tests +# ===----------------------------------------------------------------------=== # + fn test_string_slice_layout() raises: # Test that the layout of `StringSlice` is the same as `llvm::StringRef`. @@ -115,7 +146,7 @@ fn test_string_byte_span() raises: assert_equal(Int(sub5.unsafe_ptr()) - Int(sub4.unsafe_ptr()), 2) # ---------------------------------- - # Test invalid slicing + # Test out of range slicing # ---------------------------------- # TODO: Improve error reporting for invalid slice bounds. @@ -138,6 +169,81 @@ fn test_string_byte_span() raises: # String("Slice start is out of bounds"), # ) + # -------------------------------------------------------- + # Test that malformed partial slicing of codepoints raises + # -------------------------------------------------------- + + # These test what happens if you try to subslice a string in a way that + # would leave the byte contents of the string containing partial encoded + # codepoint sequences, invalid UTF-8. Consider a string with the following + # content, containing both 1-byte and a 4-byte UTF-8 sequence: + # + # ┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ + # ┃ Hi👋! ┃ String + # ┣━━┳━━━┳━━━━━━━━━━━━━━━┳━━┫ + # ┃H ┃ i ┃ 👋 ┃! ┃ Codepoint Characters + # ┣━━╋━━━╋━━━━━━━━━━━━━━━╋━━┫ + # ┃72┃105┃ 128075 ┃33┃ Codepoints + # ┣━━╋━━━╋━━━┳━━━┳━━━┳━━━╋━━┫ + # ┃72┃105┃240┃159┃145┃139┃33┃ Bytes + # ┗━━┻━━━┻━━━┻━━━┻━━━┻━━━┻━━┛ + # 0 1 2 3 4 5 6 + var unicode_str1 = StringSlice("Hi👋!") + + # Test slicing 0:{0–7} + assert_equal(unicode_str1[0:0], "") + assert_equal(unicode_str1[0:1], "H") + assert_equal(unicode_str1[0:2], "Hi") + with assert_raises( + contains="String `Slice` end byte 3 must fall on codepoint boundary." + ): + _ = unicode_str1[0:3] + with assert_raises( + contains="String `Slice` end byte 4 must fall on codepoint boundary." + ): + _ = unicode_str1[0:4] + with assert_raises( + contains="String `Slice` end byte 5 must fall on codepoint boundary." + ): + _ = unicode_str1[0:5] + assert_equal(unicode_str1[0:6], "Hi👋") + assert_equal(unicode_str1[0:7], "Hi👋!") + + # ------------------------------------------------------------------- + # Test that slicing through combining codepoint graphemes is allowed + # ------------------------------------------------------------------- + + # The "ö" is a user-perceived character (grapheme) that is composed of two + # codepoints. This test tests that we can use string slicing to divide that + # grapheme into constituent codepoints. + # + # ┏━━━━━━━━━━━━━━━┓ + # ┃ yö ┃ String + # ┣━━━┳━━━┳━━━━━━━┫ + # ┃ y ┃ o ┃ ̈ ┃ Codepoint Characters + # ┣━━━╋━━━╋━━━━━━━┫ + # ┃121┃111┃ 776 ┃ Codepoints + # ┣━━━╋━━━╋━━━┳━━━┫ + # ┃121┃111┃204┃136┃ Bytes + # ┗━━━┻━━━┻━━━┻━━━┛ + # 0 1 2 3 + var unicode_str2 = StringSlice("yö") + + assert_equal(unicode_str2[0:1], "y") + assert_equal(unicode_str2[0:2], "yo") + with assert_raises( + contains="String `Slice` end byte 3 must fall on codepoint boundary." + ): + _ = unicode_str2[0:3] + assert_equal(unicode_str2[0:4], unicode_str2) + with assert_raises( + contains="String `Slice` end byte 3 must fall on codepoint boundary." + ): + _ = unicode_str2[2:3] + # NOTE: This renders weirdly, but is a single-codepoint string containing + # . + assert_equal(unicode_str2[2:4], "̈") + fn test_heap_string_from_string_slice() raises: alias string_lit: StringLiteral = "Hello" @@ -236,7 +342,7 @@ fn test_slice_char_length() raises: assert_equal(s1.char_length(), 3) # This string contains 1-, 2-, 3-, and 4-byte codepoint sequences. - var s2 = StringSlice("߷കൈ🔄!") + var s2 = EVERY_CODEPOINT_LENGTH_STR assert_equal(s2.byte_length(), 13) assert_equal(s2.char_length(), 5) @@ -996,9 +1102,7 @@ def test_chars_iter(): # A piece of text containing, 1-byte, 2-byte, 3-byte, and 4-byte codepoint # sequences. - # For a visualization of this sequence, see: - # https://connorgray.com/ephemera/project-log#2025-01-13 - var s3 = StringSlice("߷കൈ🔄!") + var s3 = EVERY_CODEPOINT_LENGTH_STR assert_equal(s3.byte_length(), 13) assert_equal(s3.char_length(), 5) var s3_iter = s3.codepoints() diff --git a/stdlib/test/collections/string/test_unicode.mojo b/mojo/stdlib/test/collections/string/test_unicode.mojo similarity index 100% rename from stdlib/test/collections/string/test_unicode.mojo rename to mojo/stdlib/test/collections/string/test_unicode.mojo diff --git a/stdlib/test/collections/test_codepoint.mojo b/mojo/stdlib/test/collections/test_codepoint.mojo similarity index 100% rename from stdlib/test/collections/test_codepoint.mojo rename to mojo/stdlib/test/collections/test_codepoint.mojo diff --git a/stdlib/test/collections/test_counter.mojo b/mojo/stdlib/test/collections/test_counter.mojo similarity index 100% rename from stdlib/test/collections/test_counter.mojo rename to mojo/stdlib/test/collections/test_counter.mojo diff --git a/stdlib/test/collections/test_deque.mojo b/mojo/stdlib/test/collections/test_deque.mojo similarity index 100% rename from stdlib/test/collections/test_deque.mojo rename to mojo/stdlib/test/collections/test_deque.mojo diff --git a/stdlib/test/collections/test_dict.mojo b/mojo/stdlib/test/collections/test_dict.mojo similarity index 100% rename from stdlib/test/collections/test_dict.mojo rename to mojo/stdlib/test/collections/test_dict.mojo diff --git a/stdlib/test/collections/test_index_normalization.mojo b/mojo/stdlib/test/collections/test_index_normalization.mojo similarity index 100% rename from stdlib/test/collections/test_index_normalization.mojo rename to mojo/stdlib/test/collections/test_index_normalization.mojo diff --git a/stdlib/test/collections/test_inline_array.mojo b/mojo/stdlib/test/collections/test_inline_array.mojo similarity index 96% rename from stdlib/test/collections/test_inline_array.mojo rename to mojo/stdlib/test/collections/test_inline_array.mojo index a46aae3325..d3a3f7a99d 100644 --- a/stdlib/test/collections/test_inline_array.mojo +++ b/mojo/stdlib/test/collections/test_inline_array.mojo @@ -214,6 +214,17 @@ def test_inline_array_runs_destructors(): assert_equal(destructor_counter[3], 30) +fn test_unsafe_ptr() raises: + alias N = 10 + var arr = InlineArray[Int, 10](fill=0) + for i in range(N): + arr[i] = i + + var ptr = arr.unsafe_ptr() + for i in range(N): + assert_equal(arr[i], ptr[i]) + + def main(): test_array_unsafe_get() test_array_int() @@ -222,3 +233,4 @@ def main(): test_array_unsafe_assume_initialized_constructor_string() test_array_contains() test_inline_array_runs_destructors() + test_unsafe_ptr() diff --git a/stdlib/test/collections/test_inline_list.mojo b/mojo/stdlib/test/collections/test_inline_list.mojo similarity index 100% rename from stdlib/test/collections/test_inline_list.mojo rename to mojo/stdlib/test/collections/test_inline_list.mojo diff --git a/stdlib/test/collections/test_interval.mojo b/mojo/stdlib/test/collections/test_interval.mojo similarity index 100% rename from stdlib/test/collections/test_interval.mojo rename to mojo/stdlib/test/collections/test_interval.mojo diff --git a/stdlib/test/collections/test_linked_list.mojo b/mojo/stdlib/test/collections/test_linked_list.mojo similarity index 100% rename from stdlib/test/collections/test_linked_list.mojo rename to mojo/stdlib/test/collections/test_linked_list.mojo diff --git a/stdlib/test/collections/test_list.mojo b/mojo/stdlib/test/collections/test_list.mojo similarity index 99% rename from stdlib/test/collections/test_list.mojo rename to mojo/stdlib/test/collections/test_list.mojo index b7c3cecf7a..a7a6e30f0f 100644 --- a/stdlib/test/collections/test_list.mojo +++ b/mojo/stdlib/test/collections/test_list.mojo @@ -574,7 +574,7 @@ def test_no_extra_copies_with_sugared_set_by_field(): # Ensure correct behavior of __copyinit__ # as reported in GH issue 27875 internally and -# https://github.com/modular/mojo/issues/1493 +# https://github.com/modular/max/issues/1493 def test_list_copy_constructor(): var vec = List[Int](capacity=1) var vec_copy = vec diff --git a/stdlib/test/collections/test_list_getitem_invalid_index.mojo b/mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo similarity index 93% rename from stdlib/test/collections/test_list_getitem_invalid_index.mojo rename to mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo index 34ef22d26c..09bb5c0a45 100644 --- a/stdlib/test/collections/test_list_getitem_invalid_index.mojo +++ b/mojo/stdlib/test/collections/test_list_getitem_invalid_index.mojo @@ -17,7 +17,7 @@ # CHECK-FAIL-LABEL: test_fail_list_index fn main(): print("== test_fail_list_index") - # CHECK-FAIL: index: 4 is out of bounds for `List` of size: 3 + # CHECK-FAIL: index: 4 is out of bounds for `List` of length: 3 nums = List[Int](1, 2, 3) print(nums[4]) diff --git a/stdlib/test/collections/test_optional.mojo b/mojo/stdlib/test/collections/test_optional.mojo similarity index 100% rename from stdlib/test/collections/test_optional.mojo rename to mojo/stdlib/test/collections/test_optional.mojo diff --git a/stdlib/test/collections/test_set.mojo b/mojo/stdlib/test/collections/test_set.mojo similarity index 100% rename from stdlib/test/collections/test_set.mojo rename to mojo/stdlib/test/collections/test_set.mojo diff --git a/stdlib/test/collections/test_vector.mojo b/mojo/stdlib/test/collections/test_vector.mojo similarity index 100% rename from stdlib/test/collections/test_vector.mojo rename to mojo/stdlib/test/collections/test_vector.mojo diff --git a/stdlib/test/hashlib/test_ahash.mojo b/mojo/stdlib/test/hashlib/test_ahash.mojo similarity index 100% rename from stdlib/test/hashlib/test_ahash.mojo rename to mojo/stdlib/test/hashlib/test_ahash.mojo diff --git a/stdlib/test/hashlib/test_hash.mojo b/mojo/stdlib/test/hashlib/test_hash.mojo similarity index 100% rename from stdlib/test/hashlib/test_hash.mojo rename to mojo/stdlib/test/hashlib/test_hash.mojo diff --git a/stdlib/test/hashlib/test_hasher.mojo b/mojo/stdlib/test/hashlib/test_hasher.mojo similarity index 100% rename from stdlib/test/hashlib/test_hasher.mojo rename to mojo/stdlib/test/hashlib/test_hasher.mojo diff --git a/stdlib/test/lit.cfg.py b/mojo/stdlib/test/lit.cfg.py similarity index 100% rename from stdlib/test/lit.cfg.py rename to mojo/stdlib/test/lit.cfg.py diff --git a/stdlib/test/memory/test_arc.mojo b/mojo/stdlib/test/memory/test_arc.mojo similarity index 100% rename from stdlib/test/memory/test_arc.mojo rename to mojo/stdlib/test/memory/test_arc.mojo diff --git a/stdlib/test/memory/test_bitcast.mojo b/mojo/stdlib/test/memory/test_bitcast.mojo similarity index 100% rename from stdlib/test/memory/test_bitcast.mojo rename to mojo/stdlib/test/memory/test_bitcast.mojo diff --git a/stdlib/test/memory/test_maybe_uninitialized.mojo b/mojo/stdlib/test/memory/test_maybe_uninitialized.mojo similarity index 100% rename from stdlib/test/memory/test_maybe_uninitialized.mojo rename to mojo/stdlib/test/memory/test_maybe_uninitialized.mojo diff --git a/stdlib/test/memory/test_memory.mojo b/mojo/stdlib/test/memory/test_memory.mojo similarity index 100% rename from stdlib/test/memory/test_memory.mojo rename to mojo/stdlib/test/memory/test_memory.mojo diff --git a/stdlib/test/memory/test_owned_pointer.mojo b/mojo/stdlib/test/memory/test_owned_pointer.mojo similarity index 100% rename from stdlib/test/memory/test_owned_pointer.mojo rename to mojo/stdlib/test/memory/test_owned_pointer.mojo diff --git a/stdlib/test/memory/test_reference.mojo b/mojo/stdlib/test/memory/test_reference.mojo similarity index 100% rename from stdlib/test/memory/test_reference.mojo rename to mojo/stdlib/test/memory/test_reference.mojo diff --git a/stdlib/test/memory/test_span.mojo b/mojo/stdlib/test/memory/test_span.mojo similarity index 100% rename from stdlib/test/memory/test_span.mojo rename to mojo/stdlib/test/memory/test_span.mojo diff --git a/stdlib/test/memory/test_unsafepointer.mojo b/mojo/stdlib/test/memory/test_unsafepointer.mojo similarity index 100% rename from stdlib/test/memory/test_unsafepointer.mojo rename to mojo/stdlib/test/memory/test_unsafepointer.mojo diff --git a/stdlib/test/os/path/test_basename.mojo b/mojo/stdlib/test/os/path/test_basename.mojo similarity index 100% rename from stdlib/test/os/path/test_basename.mojo rename to mojo/stdlib/test/os/path/test_basename.mojo diff --git a/stdlib/test/os/path/test_dirname.mojo b/mojo/stdlib/test/os/path/test_dirname.mojo similarity index 100% rename from stdlib/test/os/path/test_dirname.mojo rename to mojo/stdlib/test/os/path/test_dirname.mojo diff --git a/stdlib/test/os/path/test_exists.mojo b/mojo/stdlib/test/os/path/test_exists.mojo similarity index 100% rename from stdlib/test/os/path/test_exists.mojo rename to mojo/stdlib/test/os/path/test_exists.mojo diff --git a/stdlib/test/os/path/test_expanduser.mojo b/mojo/stdlib/test/os/path/test_expanduser.mojo similarity index 100% rename from stdlib/test/os/path/test_expanduser.mojo rename to mojo/stdlib/test/os/path/test_expanduser.mojo diff --git a/stdlib/test/os/path/test_expandvars.mojo b/mojo/stdlib/test/os/path/test_expandvars.mojo similarity index 100% rename from stdlib/test/os/path/test_expandvars.mojo rename to mojo/stdlib/test/os/path/test_expandvars.mojo diff --git a/stdlib/test/os/path/test_getsize.mojo b/mojo/stdlib/test/os/path/test_getsize.mojo similarity index 100% rename from stdlib/test/os/path/test_getsize.mojo rename to mojo/stdlib/test/os/path/test_getsize.mojo diff --git a/stdlib/test/os/path/test_isdir.mojo b/mojo/stdlib/test/os/path/test_isdir.mojo similarity index 100% rename from stdlib/test/os/path/test_isdir.mojo rename to mojo/stdlib/test/os/path/test_isdir.mojo diff --git a/stdlib/test/os/path/test_isfile.mojo b/mojo/stdlib/test/os/path/test_isfile.mojo similarity index 100% rename from stdlib/test/os/path/test_isfile.mojo rename to mojo/stdlib/test/os/path/test_isfile.mojo diff --git a/stdlib/test/os/path/test_islink.mojo b/mojo/stdlib/test/os/path/test_islink.mojo similarity index 100% rename from stdlib/test/os/path/test_islink.mojo rename to mojo/stdlib/test/os/path/test_islink.mojo diff --git a/stdlib/test/os/path/test_join.mojo b/mojo/stdlib/test/os/path/test_join.mojo similarity index 100% rename from stdlib/test/os/path/test_join.mojo rename to mojo/stdlib/test/os/path/test_join.mojo diff --git a/stdlib/test/os/path/test_split.mojo b/mojo/stdlib/test/os/path/test_split.mojo similarity index 100% rename from stdlib/test/os/path/test_split.mojo rename to mojo/stdlib/test/os/path/test_split.mojo diff --git a/stdlib/test/os/path/test_splitroot.mojo b/mojo/stdlib/test/os/path/test_splitroot.mojo similarity index 100% rename from stdlib/test/os/path/test_splitroot.mojo rename to mojo/stdlib/test/os/path/test_splitroot.mojo diff --git a/stdlib/test/os/test_atomic.mojo b/mojo/stdlib/test/os/test_atomic.mojo similarity index 100% rename from stdlib/test/os/test_atomic.mojo rename to mojo/stdlib/test/os/test_atomic.mojo diff --git a/stdlib/test/os/test_env.mojo b/mojo/stdlib/test/os/test_env.mojo similarity index 100% rename from stdlib/test/os/test_env.mojo rename to mojo/stdlib/test/os/test_env.mojo diff --git a/stdlib/test/os/test_listdir.mojo b/mojo/stdlib/test/os/test_listdir.mojo similarity index 100% rename from stdlib/test/os/test_listdir.mojo rename to mojo/stdlib/test/os/test_listdir.mojo diff --git a/stdlib/test/os/test_mkdir_and_rmdir.mojo b/mojo/stdlib/test/os/test_mkdir_and_rmdir.mojo similarity index 100% rename from stdlib/test/os/test_mkdir_and_rmdir.mojo rename to mojo/stdlib/test/os/test_mkdir_and_rmdir.mojo diff --git a/stdlib/test/os/test_no_trap.mojo b/mojo/stdlib/test/os/test_no_trap.mojo similarity index 100% rename from stdlib/test/os/test_no_trap.mojo rename to mojo/stdlib/test/os/test_no_trap.mojo diff --git a/stdlib/test/os/test_remove.mojo b/mojo/stdlib/test/os/test_remove.mojo similarity index 100% rename from stdlib/test/os/test_remove.mojo rename to mojo/stdlib/test/os/test_remove.mojo diff --git a/stdlib/test/os/test_stat.mojo b/mojo/stdlib/test/os/test_stat.mojo similarity index 100% rename from stdlib/test/os/test_stat.mojo rename to mojo/stdlib/test/os/test_stat.mojo diff --git a/stdlib/test/os/test_trap.mojo b/mojo/stdlib/test/os/test_trap.mojo similarity index 100% rename from stdlib/test/os/test_trap.mojo rename to mojo/stdlib/test/os/test_trap.mojo diff --git a/stdlib/test/os/test_trap_stringable.mojo b/mojo/stdlib/test/os/test_trap_stringable.mojo similarity index 100% rename from stdlib/test/os/test_trap_stringable.mojo rename to mojo/stdlib/test/os/test_trap_stringable.mojo diff --git a/stdlib/test/pathlib/test_pathlib.mojo b/mojo/stdlib/test/pathlib/test_pathlib.mojo similarity index 100% rename from stdlib/test/pathlib/test_pathlib.mojo rename to mojo/stdlib/test/pathlib/test_pathlib.mojo diff --git a/stdlib/test/pwd/test_pwd.mojo b/mojo/stdlib/test/pwd/test_pwd.mojo similarity index 100% rename from stdlib/test/pwd/test_pwd.mojo rename to mojo/stdlib/test/pwd/test_pwd.mojo diff --git a/stdlib/test/python/custom_indexable.py b/mojo/stdlib/test/python/custom_indexable.py similarity index 100% rename from stdlib/test/python/custom_indexable.py rename to mojo/stdlib/test/python/custom_indexable.py diff --git a/stdlib/test/python/module_for_test_python_object_dunder_contains.py b/mojo/stdlib/test/python/module_for_test_python_object_dunder_contains.py similarity index 100% rename from stdlib/test/python/module_for_test_python_object_dunder_contains.py rename to mojo/stdlib/test/python/module_for_test_python_object_dunder_contains.py diff --git a/stdlib/test/python/my_module.py b/mojo/stdlib/test/python/my_module.py similarity index 100% rename from stdlib/test/python/my_module.py rename to mojo/stdlib/test/python/my_module.py diff --git a/stdlib/test/python/test_ownership.mojo b/mojo/stdlib/test/python/test_ownership.mojo similarity index 100% rename from stdlib/test/python/test_ownership.mojo rename to mojo/stdlib/test/python/test_ownership.mojo diff --git a/stdlib/test/python/test_python_cpython.mojo b/mojo/stdlib/test/python/test_python_cpython.mojo similarity index 100% rename from stdlib/test/python/test_python_cpython.mojo rename to mojo/stdlib/test/python/test_python_cpython.mojo diff --git a/stdlib/test/python/test_python_error_handling.mojo b/mojo/stdlib/test/python/test_python_error_handling.mojo similarity index 100% rename from stdlib/test/python/test_python_error_handling.mojo rename to mojo/stdlib/test/python/test_python_error_handling.mojo diff --git a/stdlib/test/python/test_python_info.mojo b/mojo/stdlib/test/python/test_python_info.mojo similarity index 100% rename from stdlib/test/python/test_python_info.mojo rename to mojo/stdlib/test/python/test_python_info.mojo diff --git a/stdlib/test/python/test_python_interop.mojo b/mojo/stdlib/test/python/test_python_interop.mojo similarity index 100% rename from stdlib/test/python/test_python_interop.mojo rename to mojo/stdlib/test/python/test_python_interop.mojo diff --git a/stdlib/test/python/test_python_module_create.mojo b/mojo/stdlib/test/python/test_python_module_create.mojo similarity index 100% rename from stdlib/test/python/test_python_module_create.mojo rename to mojo/stdlib/test/python/test_python_module_create.mojo diff --git a/stdlib/test/python/test_python_object.mojo b/mojo/stdlib/test/python/test_python_object.mojo similarity index 100% rename from stdlib/test/python/test_python_object.mojo rename to mojo/stdlib/test/python/test_python_object.mojo diff --git a/stdlib/test/python/test_python_object_dunder_contains.mojo b/mojo/stdlib/test/python/test_python_object_dunder_contains.mojo similarity index 100% rename from stdlib/test/python/test_python_object_dunder_contains.mojo rename to mojo/stdlib/test/python/test_python_object_dunder_contains.mojo diff --git a/stdlib/test/python/test_python_object_len_raises.mojo b/mojo/stdlib/test/python/test_python_object_len_raises.mojo similarity index 100% rename from stdlib/test/python/test_python_object_len_raises.mojo rename to mojo/stdlib/test/python/test_python_object_len_raises.mojo diff --git a/stdlib/test/python/test_python_to_mojo.mojo b/mojo/stdlib/test/python/test_python_to_mojo.mojo similarity index 100% rename from stdlib/test/python/test_python_to_mojo.mojo rename to mojo/stdlib/test/python/test_python_to_mojo.mojo diff --git a/stdlib/test/random/test_random.mojo b/mojo/stdlib/test/random/test_random.mojo similarity index 100% rename from stdlib/test/random/test_random.mojo rename to mojo/stdlib/test/random/test_random.mojo diff --git a/stdlib/test/sys/test_aarch64_target.mojo b/mojo/stdlib/test/sys/test_aarch64_target.mojo similarity index 100% rename from stdlib/test/sys/test_aarch64_target.mojo rename to mojo/stdlib/test/sys/test_aarch64_target.mojo diff --git a/stdlib/test/sys/test_build_info_debug.mojo b/mojo/stdlib/test/sys/test_build_info_debug.mojo similarity index 100% rename from stdlib/test/sys/test_build_info_debug.mojo rename to mojo/stdlib/test/sys/test_build_info_debug.mojo diff --git a/stdlib/test/sys/test_c_types.mojo b/mojo/stdlib/test/sys/test_c_types.mojo similarity index 100% rename from stdlib/test/sys/test_c_types.mojo rename to mojo/stdlib/test/sys/test_c_types.mojo diff --git a/stdlib/test/sys/test_compile.mojo b/mojo/stdlib/test/sys/test_compile.mojo similarity index 100% rename from stdlib/test/sys/test_compile.mojo rename to mojo/stdlib/test/sys/test_compile.mojo diff --git a/stdlib/test/sys/test_compile_debug.mojo b/mojo/stdlib/test/sys/test_compile_debug.mojo similarity index 100% rename from stdlib/test/sys/test_compile_debug.mojo rename to mojo/stdlib/test/sys/test_compile_debug.mojo diff --git a/stdlib/test/sys/test_dlhandle.mojo b/mojo/stdlib/test/sys/test_dlhandle.mojo similarity index 100% rename from stdlib/test/sys/test_dlhandle.mojo rename to mojo/stdlib/test/sys/test_dlhandle.mojo diff --git a/stdlib/test/sys/test_exit_0.mojo b/mojo/stdlib/test/sys/test_exit_0.mojo similarity index 100% rename from stdlib/test/sys/test_exit_0.mojo rename to mojo/stdlib/test/sys/test_exit_0.mojo diff --git a/stdlib/test/sys/test_exit_1.mojo b/mojo/stdlib/test/sys/test_exit_1.mojo similarity index 100% rename from stdlib/test/sys/test_exit_1.mojo rename to mojo/stdlib/test/sys/test_exit_1.mojo diff --git a/stdlib/test/sys/test_intrinsics.mojo b/mojo/stdlib/test/sys/test_intrinsics.mojo similarity index 100% rename from stdlib/test/sys/test_intrinsics.mojo rename to mojo/stdlib/test/sys/test_intrinsics.mojo diff --git a/stdlib/test/sys/test_invalid_paramenv.mojo b/mojo/stdlib/test/sys/test_invalid_paramenv.mojo similarity index 100% rename from stdlib/test/sys/test_invalid_paramenv.mojo rename to mojo/stdlib/test/sys/test_invalid_paramenv.mojo diff --git a/stdlib/test/sys/test_linux_target.mojo b/mojo/stdlib/test/sys/test_linux_target.mojo similarity index 100% rename from stdlib/test/sys/test_linux_target.mojo rename to mojo/stdlib/test/sys/test_linux_target.mojo diff --git a/stdlib/test/sys/test_macos_target.mojo b/mojo/stdlib/test/sys/test_macos_target.mojo similarity index 100% rename from stdlib/test/sys/test_macos_target.mojo rename to mojo/stdlib/test/sys/test_macos_target.mojo diff --git a/stdlib/test/sys/test_paramenv.mojo b/mojo/stdlib/test/sys/test_paramenv.mojo similarity index 100% rename from stdlib/test/sys/test_paramenv.mojo rename to mojo/stdlib/test/sys/test_paramenv.mojo diff --git a/stdlib/test/sys/test_sizeof.mojo b/mojo/stdlib/test/sys/test_sizeof.mojo similarity index 100% rename from stdlib/test/sys/test_sizeof.mojo rename to mojo/stdlib/test/sys/test_sizeof.mojo diff --git a/stdlib/test/sys/test_targetinfo.mojo b/mojo/stdlib/test/sys/test_targetinfo.mojo similarity index 100% rename from stdlib/test/sys/test_targetinfo.mojo rename to mojo/stdlib/test/sys/test_targetinfo.mojo diff --git a/stdlib/test/sys/test_windows_target.mojo b/mojo/stdlib/test/sys/test_windows_target.mojo similarity index 100% rename from stdlib/test/sys/test_windows_target.mojo rename to mojo/stdlib/test/sys/test_windows_target.mojo diff --git a/stdlib/test/tempfile/test_tempfile.mojo b/mojo/stdlib/test/tempfile/test_tempfile.mojo similarity index 100% rename from stdlib/test/tempfile/test_tempfile.mojo rename to mojo/stdlib/test/tempfile/test_tempfile.mojo diff --git a/stdlib/test/test_utils/__init__.mojo b/mojo/stdlib/test/test_utils/__init__.mojo similarity index 100% rename from stdlib/test/test_utils/__init__.mojo rename to mojo/stdlib/test/test_utils/__init__.mojo diff --git a/stdlib/test/test_utils/test_utils.mojo b/mojo/stdlib/test/test_utils/test_utils.mojo similarity index 100% rename from stdlib/test/test_utils/test_utils.mojo rename to mojo/stdlib/test/test_utils/test_utils.mojo diff --git a/stdlib/test/test_utils/types.mojo b/mojo/stdlib/test/test_utils/types.mojo similarity index 100% rename from stdlib/test/test_utils/types.mojo rename to mojo/stdlib/test/test_utils/types.mojo diff --git a/stdlib/test/testing/test_assert_raises.mojo b/mojo/stdlib/test/testing/test_assert_raises.mojo similarity index 100% rename from stdlib/test/testing/test_assert_raises.mojo rename to mojo/stdlib/test/testing/test_assert_raises.mojo diff --git a/stdlib/test/testing/test_assertion.mojo b/mojo/stdlib/test/testing/test_assertion.mojo similarity index 100% rename from stdlib/test/testing/test_assertion.mojo rename to mojo/stdlib/test/testing/test_assertion.mojo diff --git a/stdlib/test/time/test_time.mojo b/mojo/stdlib/test/time/test_time.mojo similarity index 100% rename from stdlib/test/time/test_time.mojo rename to mojo/stdlib/test/time/test_time.mojo diff --git a/stdlib/test/utils/issue_13632.mojo b/mojo/stdlib/test/utils/issue_13632.mojo similarity index 100% rename from stdlib/test/utils/issue_13632.mojo rename to mojo/stdlib/test/utils/issue_13632.mojo diff --git a/stdlib/test/utils/test_index.mojo b/mojo/stdlib/test/utils/test_index.mojo similarity index 100% rename from stdlib/test/utils/test_index.mojo rename to mojo/stdlib/test/utils/test_index.mojo diff --git a/stdlib/test/utils/test_numerics.mojo b/mojo/stdlib/test/utils/test_numerics.mojo similarity index 100% rename from stdlib/test/utils/test_numerics.mojo rename to mojo/stdlib/test/utils/test_numerics.mojo diff --git a/stdlib/test/utils/test_select.mojo b/mojo/stdlib/test/utils/test_select.mojo similarity index 100% rename from stdlib/test/utils/test_select.mojo rename to mojo/stdlib/test/utils/test_select.mojo diff --git a/stdlib/test/utils/test_static_tuple.mojo b/mojo/stdlib/test/utils/test_static_tuple.mojo similarity index 100% rename from stdlib/test/utils/test_static_tuple.mojo rename to mojo/stdlib/test/utils/test_static_tuple.mojo diff --git a/stdlib/test/utils/test_tuple.mojo b/mojo/stdlib/test/utils/test_tuple.mojo similarity index 100% rename from stdlib/test/utils/test_tuple.mojo rename to mojo/stdlib/test/utils/test_tuple.mojo diff --git a/stdlib/test/utils/test_unroll.mojo b/mojo/stdlib/test/utils/test_unroll.mojo similarity index 100% rename from stdlib/test/utils/test_unroll.mojo rename to mojo/stdlib/test/utils/test_unroll.mojo diff --git a/stdlib/test/utils/test_variant.mojo b/mojo/stdlib/test/utils/test_variant.mojo similarity index 100% rename from stdlib/test/utils/test_variant.mojo rename to mojo/stdlib/test/utils/test_variant.mojo diff --git a/stdlib/test/utils/test_write.mojo b/mojo/stdlib/test/utils/test_write.mojo similarity index 100% rename from stdlib/test/utils/test_write.mojo rename to mojo/stdlib/test/utils/test_write.mojo diff --git a/stdlib/test/utils/test_write_to_stdout.mojo b/mojo/stdlib/test/utils/test_write_to_stdout.mojo similarity index 100% rename from stdlib/test/utils/test_write_to_stdout.mojo rename to mojo/stdlib/test/utils/test_write_to_stdout.mojo diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000000..46c3124e43 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,14 @@ +[tool.black] +include = '\.pyi?$' +line-length = 80 +preview = true +fast = true + +[tool.pyright] +typeCheckingMode = "off" +reportMissingImports = false + +[project] +requires-python = ">=3.8" +name = "max-repo" + diff --git a/src/max/Dockerfile.cpu b/src/max/Dockerfile.cpu new file mode 100644 index 0000000000..08395e8a21 --- /dev/null +++ b/src/max/Dockerfile.cpu @@ -0,0 +1,46 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# This is an example of how to run max-pipelines serve in a docker container. + +# Create a build image to download depedencies +FROM ghcr.io/modular/magic:latest AS production + +RUN apt-get update && apt-get install -y --no-install-recommends build-essential git + +COPY . /app +WORKDIR /app + +RUN magic install + +EXPOSE 8000 + +# TODO: Add HEALTHCHECK instruction +# HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail http://localhost:8000/health || exit 1 + +LABEL maintainer "Modular Inc " + +ENV PYTHONUNBUFFERED=1 +# suppress transformers logging +ENV TRANSFORMERS_VERBOSITY="critical" +ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1 +ENV MODULAR_STRUCTURED_LOGGING=1 +ENV PROMETHEUS_MULTIPROC_DIR=/tmp + +# OTEL configuration +ENV OTEL_SERVICE_NAME="max-serve" +# OTEL's default histogram bucktes have poor resolution. Prefer exponential histograms. +ENV OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION="base2_exponential_bucket_histogram" + +ENTRYPOINT ["magic", "run", "serve"] +CMD ["--model-path=modularai/Llama-3.1-8B-Instruct-GGUF"] diff --git a/src/max/Dockerfile.cuda-simple b/src/max/Dockerfile.cuda-simple new file mode 100644 index 0000000000..eb288f8e29 --- /dev/null +++ b/src/max/Dockerfile.cuda-simple @@ -0,0 +1,50 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# This is a simplified Dockerfile that just runs the max-pipelines serve command +# targeting a CUDA-enabled image. This build includes magic and build tools +# in the production image. + +ARG CUDA_VERSION=12.6.0 + +# Create a build image to download depedencies +FROM ghcr.io/modular/magic:noble-cuda-${CUDA_VERSION} AS production + +RUN apt-get update && apt-get install -y --no-install-recommends build-essential git + +COPY . /app +WORKDIR /app + +RUN magic install + +EXPOSE 8000 + +# TODO: Add HEALTHCHECK instruction +# HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail http://localhost:8000/health || exit 1 + +LABEL maintainer "Modular Inc " + +ENV PYTHONUNBUFFERED=1 +# suppress transformers logging +ENV TRANSFORMERS_VERBOSITY="critical" +ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1 +ENV MODULAR_STRUCTURED_LOGGING=1 +ENV PROMETHEUS_MULTIPROC_DIR=/tmp + +# OTEL configuration +ENV OTEL_SERVICE_NAME="max-serve" +# OTEL's default histogram bucktes have poor resolution. Prefer exponential histograms. +ENV OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION="base2_exponential_bucket_histogram" + +ENTRYPOINT ["magic", "run", "serve"] +CMD ["--model-path=modularai/Llama-3.1-8B-Instruct-GGUF"] diff --git a/src/max/Dockerfile.cuda-small b/src/max/Dockerfile.cuda-small new file mode 100644 index 0000000000..ac53dbdbf5 --- /dev/null +++ b/src/max/Dockerfile.cuda-small @@ -0,0 +1,63 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# This build avoids having magic and build dependencies in the production image +# targeting a CUDA-enabled image. It optimizes for size over customizability by +# not including build tools in the production image. + +ARG CUDA_VERSION=12.6.0 +ARG BASE_IMAGE=nvidia/cuda:{CUDA_VERSION}-base-ubuntu24.04 + +# Create a build image to download depedencies +FROM ghcr.io/modular/magic:noble AS build + +RUN apt-get update && apt-get install -y --no-install-recommends build-essential git + +COPY . /app +WORKDIR /app + +RUN magic install + +# Create the shell-hook bash script to activate the environment +RUN magic shell-hook > /shell-hook.sh +RUN echo 'python -m max.entrypoints.pipelines serve "$@"' >> /shell-hook.sh + +# Create the production image +FROM ${BASE_IMAGE} AS production + +COPY --from=build /app/.magic/envs/default /app/.magic/envs/default +COPY --from=build /shell-hook.sh /shellhook.sh +COPY . /app + +WORKDIR /app +EXPOSE 8000 + +# TODO: Add HEALTHCHECK instruction +# HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail http://localhost:8000/health || exit 1 + +LABEL maintainer "Modular Inc " + +ENV PYTHONUNBUFFERED=1 +# suppress transformers logging +ENV TRANSFORMERS_VERBOSITY="critical" +ENV TRANSFORMERS_NO_ADVISORY_WARNINGS=1 +ENV MODULAR_STRUCTURED_LOGGING=1 +ENV PROMETHEUS_MULTIPROC_DIR=/tmp + +# OTEL configuration +ENV OTEL_SERVICE_NAME="max-serve" +# OTEL's default histogram bucktes have poor resolution. Prefer exponential histograms. +ENV OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION="base2_exponential_bucket_histogram" + +ENTRYPOINT ["/bin/bash", "/shell-hook.sh"] +CMD ["--model-path=modularai/Llama-3.1-8B-Instruct-GGUF"] diff --git a/src/max/README.md b/src/max/README.md new file mode 100644 index 0000000000..5a27ab75da --- /dev/null +++ b/src/max/README.md @@ -0,0 +1,41 @@ +# MAX Pipelines + +These are end-to-end pipelines that demonstrate the power of +[MAX](https://docs.modular.com/max/) for accelerating common AI workloads, and +more. Each of the supported pipelines can be served via an OpenAI-compatible +endpoint. + +MAX can also serve most PyTorch-based large language models that are +present on Hugging Face, although not at the same performance as native MAX +Graph versions. + +## Usage + +The easiest way to try out any of the pipelines is with our Magic command-line +tool. + +1. Install Magic on macOS and Linux with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Install max-pipelines command to run the pipelines. + + ```shell + magic global install max-pipelines + ``` + +3. Serve a model. + + ```shell + max-pipelines serve --model-path deepseek-ai/DeepSeek-R1-Distill-Llama-8B + ``` + +See [https://builds.modular.com/](https://builds.modular.com/) to discover many +of the models supported by MAX. diff --git a/src/max/entrypoints/cli/__init__.py b/src/max/entrypoints/cli/__init__.py new file mode 100644 index 0000000000..cb55ab269b --- /dev/null +++ b/src/max/entrypoints/cli/__init__.py @@ -0,0 +1,51 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Pipeline cli utilities.""" + +from .config import ( + config_to_flag, + get_default, + get_field_type, + is_flag, + is_multiple, + is_optional, + pipeline_config_options, + validate_field_type, +) +from .device_options import DevicesOptionType +from .encode import pipeline_encode +from .generate import generate_text_for_pipeline, stream_text_to_console +from .list import list_pipelines_to_console, list_pipelines_to_json +from .metrics import TextGenerationMetrics +from .serve import serve_pipeline + +__all__ = [ + "DevicesOptionType", + "TextGenerationMetrics", + "config_to_flag", + "pipeline_config_options", + "serve_pipeline", + "generate_text_for_pipeline", + "stream_text_to_console", + "list_pipelines_to_console", + "list_pipelines_to_json", + "pipeline_encode", + "get_default", + "get_field_type", + "is_flag", + "is_multiple", + "is_optional", + "validate_field_type", +] diff --git a/src/max/entrypoints/cli/config.py b/src/max/entrypoints/cli/config.py new file mode 100644 index 0000000000..c303a0d4a5 --- /dev/null +++ b/src/max/entrypoints/cli/config.py @@ -0,0 +1,202 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Utilities for working with Config objects in Click.""" + +from __future__ import annotations + +import functools +import inspect +import pathlib +from dataclasses import MISSING, Field, fields +from enum import Enum +from pathlib import Path +from typing import Any, Union, get_args, get_origin, get_type_hints + +import click +from max.driver import DeviceSpec +from max.pipelines import PipelineConfig + +from .device_options import DevicesOptionType + +VALID_CONFIG_TYPES = [str, bool, Enum, Path, DeviceSpec, int, float] + + +def get_interior_type(type_hint: Union[type, str, Any]) -> type[Any]: + interior_args = set(get_args(type_hint)) - set([type(None)]) + if len(interior_args) > 1: + msg = ( + "Parsing does not currently supported Union type, with more than" + " one non-None type: {type_hint}" + ) + raise ValueError(msg) + + return get_args(type_hint)[0] + + +def is_optional(type_hint: Union[type, str, Any]) -> bool: + return get_origin(type_hint) is Union and type(None) in get_args(type_hint) + + +def is_flag(field_type: Any) -> bool: + return field_type is bool + + +def validate_field_type(field_type: Any) -> bool: + if is_optional(field_type): + test_type = get_args(field_type)[0] + elif get_origin(field_type) is list: + test_type = get_interior_type(field_type) + else: + test_type = field_type + + for valid_type in VALID_CONFIG_TYPES: + if valid_type == test_type: + return True + + if get_origin(valid_type) is None and inspect.isclass(test_type): + if issubclass(test_type, valid_type): + return True + msg = f"type '{test_type}' not supported in config." + raise ValueError(msg) + + +def get_field_type(field_type: Any): + validate_field_type(field_type) + + # Get underlying core field type, is Optional or list. + if is_optional(field_type): + field_type = get_interior_type(field_type) + elif get_origin(field_type) is list: + field_type = get_interior_type(field_type) + + # Update the field_type to be format specific. + if field_type == Path: + field_type = click.Path(path_type=pathlib.Path) + elif inspect.isclass(field_type): + if issubclass(field_type, Enum): + field_type = click.Choice(list(field_type)) + + return field_type + + +def get_default(dataclass_field: Field) -> Any: + if dataclass_field.default_factory != MISSING: + default = dataclass_field.default_factory() + elif dataclass_field.default != MISSING: + default = dataclass_field.default + else: + default = None + + return default + + +def is_multiple(field_type: Any) -> bool: + return get_origin(field_type) is list + + +def create_click_option( + help_for_fields: dict[str, str], + dataclass_field: Field, + field_type: Any, +) -> click.option: # type: ignore + # Get name. + normalized_name = dataclass_field.name.lower().replace("_", "-") + + # Get Help text. + help_text = help_for_fields.get(dataclass_field.name, None) + + # Get help field. + return click.option( + f"--{normalized_name}", + show_default=True, + help=help_text, + is_flag=is_flag(field_type), + default=get_default(dataclass_field), + multiple=is_multiple(field_type), + type=get_field_type(field_type), + ) + + +def config_to_flag(cls): + options = [] + if hasattr(cls, "help"): + help_text = cls.help() + else: + help_text = {} + field_types = get_type_hints(cls) + for _field in fields(cls): + # Skip private config fields. + # We also skip device_specs as it should not be used directly via the CLI entrypoint. + if _field.name.startswith("_") or _field.name == "device_specs": + continue + + new_option = create_click_option( + help_text, _field, field_types[_field.name] + ) + options.append(new_option) + + def apply_flags(func): + for option in reversed(options): + func = option(func) # type: ignore + return func + + return apply_flags + + +def pipeline_config_options(func): + @config_to_flag(PipelineConfig) + @click.option( + "--devices", + is_flag=False, + type=DevicesOptionType(), + show_default=False, + default="", + flag_value="0", + help=( + "Whether to run the model on CPU (--devices=cpu), GPU (--devices=gpu)" + " or a list of GPUs (--devices=gpu:0,1) etc. An ID value can be" + " provided optionally to indicate the device ID to target. If not" + " provided, the model will run on the first available GPU (--devices=gpu)," + " or CPU if no GPUs are available (--devices=cpu)." + ), + ) + # Kept for backwards compatibility. + @click.option( + "--use-gpu", + is_flag=False, + type=DevicesOptionType(), + show_default=False, + default="", + flag_value="0", + help=( + "Whether to run the model on the available GPU. An ID value can be" + " provided optionally to indicate the device ID to target." + ), + ) + @functools.wraps(func) + def wrapper(*args, **kwargs): + # Remove the options from kwargs and replace with unified device_specs. + devices: str | list[int] = kwargs.pop("devices") + legacy_use_gpu = kwargs.pop("use_gpu", None) + + # Apply legacy flag if no modern devices specified. + if not devices and legacy_use_gpu: + devices = legacy_use_gpu + + kwargs["device_specs"] = DevicesOptionType.device_specs(devices) + + return func(*args, **kwargs) + + return wrapper diff --git a/src/max/entrypoints/cli/device_options.py b/src/max/entrypoints/cli/device_options.py new file mode 100644 index 0000000000..ce14d9a8fe --- /dev/null +++ b/src/max/entrypoints/cli/device_options.py @@ -0,0 +1,90 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Custom Click Options used in pipelines""" + +from __future__ import annotations + +from typing import Any + +import click +from max.driver import DeviceSpec, accelerator_count + + +class DevicesOptionType(click.ParamType): + name = "devices" + + @staticmethod + def device_specs(devices: str | list[int]) -> list[DeviceSpec]: + """Converts parsed devices input into validated :obj:`DeviceSpec` objects. + + Args: + devices: The value provided by the --devices option. + Valid arguments: + - "cpu" → use the CPU, + - "gpu" → default to GPU 0, or, + - a list of ints (GPU IDs). + + Raises: + ValueError: If a requested GPU ID is invalid. + + Returns: + A list of DeviceSpec objects. + """ + num_available_gpus = accelerator_count() + if devices == "cpu" or num_available_gpus == 0: + return [DeviceSpec.cpu()] + + requested_ids: list[int] = [] + if devices == "gpu": + requested_ids = [0] + elif isinstance(devices, list): + requested_ids = devices + + if not requested_ids: + # Return device 0 when no specific IDs are requested. + return [DeviceSpec.accelerator(id=0)] + + # Validate requested GPU IDs. + for gpu_id in requested_ids: + if gpu_id >= num_available_gpus: + msg = ( + f"GPU {gpu_id} requested but only {num_available_gpus} " + "available. Use valid device IDs or '--devices=cpu'." + ) + raise ValueError(msg) + + return [DeviceSpec.accelerator(id=id) for id in requested_ids] + + def convert( + self, + value: Any, + param: click.Parameter | None = None, + ctx: click.Context | None = None, + ) -> str | list[int]: + if not value: + return [] + + if value.lower() in {"cpu", "gpu"}: + return value.lower() + + try: + # Support both "gpu:0,1" and old "0,1" formats. + return [int(part) for part in value.replace("gpu:", "").split(",")] + except ValueError: + self.fail( + f"'{value}' is not a valid device list. Use format 'cpu', 'gpu', or 'gpu:0,1'.", + param, + ctx, + ) diff --git a/src/max/entrypoints/cli/encode.py b/src/max/entrypoints/cli/encode.py new file mode 100644 index 0000000000..42f662f106 --- /dev/null +++ b/src/max/entrypoints/cli/encode.py @@ -0,0 +1,97 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Utilities for encoding text in the cli.""" + +import asyncio +import logging +import uuid +from typing import Optional + +from max.pipelines import ( + PIPELINE_REGISTRY, + EmbeddingsGenerator, + EmbeddingsResponse, + PipelineConfig, +) +from max.pipelines.interfaces import ( + PipelineTask, + PipelineTokenizer, + TokenGeneratorRequest, +) + +from .metrics import EmbeddingsMetrics + +logger = logging.getLogger(__name__) + +MODEL_NAME = "model" + + +async def _run_pipeline_encode( + pipeline: EmbeddingsGenerator, + tokenizer: PipelineTokenizer, + prompt: str, + metrics: Optional[EmbeddingsMetrics] = None, +) -> EmbeddingsResponse: + req_id = str(uuid.uuid4()) + context = await tokenizer.new_context( + TokenGeneratorRequest( + id=req_id, + index=0, + prompt=prompt, + model_name=MODEL_NAME, + ) + ) + pipeline_request = {req_id: context} + + if metrics: + metrics.prompt_size = context.current_length + metrics.signpost("begin_encoding") + + response = pipeline.encode(pipeline_request) + + if metrics: + metrics.signpost("end_encoding") + return response[req_id] + + +def pipeline_encode( + pipeline_config: PipelineConfig, + prompt: str, + num_warmups: int = 0, +) -> None: + # Run timed run & print results. + with EmbeddingsMetrics(print_report=True) as metrics: + tokenizer, pipeline = PIPELINE_REGISTRY.retrieve( + pipeline_config, task=PipelineTask.EMBEDDINGS_GENERATION + ) + assert isinstance(pipeline, EmbeddingsGenerator) + + if num_warmups > 0: + logger.info("Running warmup") + for _ in range(num_warmups): + asyncio.run( + _run_pipeline_encode( + pipeline, tokenizer, prompt, metrics=None + ) + ) + + # Run and print results. + logger.info("Running model...") + print("Encoding:", prompt) + + pipeline_output = asyncio.run( + _run_pipeline_encode(pipeline, tokenizer, prompt, metrics=metrics) + ) + print("Embeddings:", pipeline_output.embeddings) diff --git a/src/max/entrypoints/cli/entrypoint.py b/src/max/entrypoints/cli/entrypoint.py new file mode 100644 index 0000000000..972028a959 --- /dev/null +++ b/src/max/entrypoints/cli/entrypoint.py @@ -0,0 +1,34 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Entrypoint for generalized click cli.""" + +import click + + +class ModelGroup(click.Group): + def get_command(self, ctx, cmd_name): + rv = click.Group.get_command(self, ctx, cmd_name) + if rv is not None: + return rv + supported = ", ".join(self.list_commands(ctx)) + ctx.fail( + f"Command not supported: {cmd_name}\nSupported commands:" + f" {supported}" + ) + + +@click.command(cls=ModelGroup) +def run_cli(): + pass diff --git a/src/max/entrypoints/cli/generate.py b/src/max/entrypoints/cli/generate.py new file mode 100644 index 0000000000..ec90472b7c --- /dev/null +++ b/src/max/entrypoints/cli/generate.py @@ -0,0 +1,156 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Utilities for generating text in the cli.""" + +from __future__ import annotations + +import asyncio +import logging +import uuid +from collections.abc import Iterable +from typing import Optional + +import requests +from max.pipelines import ( + PIPELINE_REGISTRY, + PipelineConfig, +) +from max.pipelines.interfaces import ( + PipelineTokenizer, + TokenGenerator, + TokenGeneratorRequest, +) + +from .metrics import TextGenerationMetrics + +logger = logging.getLogger(__name__) + +MODEL_NAME = "model" + + +async def stream_text_to_console( + pipeline: TokenGenerator, + tokenizer: PipelineTokenizer, + prompt: str, + images: Optional[list[bytes]], + num_steps: int, + metrics: Optional[TextGenerationMetrics] = None, + print_tokens: bool = True, +) -> None: + req_id = str(uuid.uuid4()) + context = await tokenizer.new_context( + TokenGeneratorRequest( + id=req_id, + index=0, + prompt=prompt, + images=images, + model_name=MODEL_NAME, + ) + ) + pipeline_request = {req_id: context} + if print_tokens: + print(prompt, end="", flush=True) + + prompt_size = context.current_length + if metrics: + metrics.prompt_size = prompt_size + metrics.signpost("begin_generation") + + try: + first_token = True + generate_again = True + while generate_again: + responses = pipeline.next_token( + pipeline_request, + num_steps=num_steps, + ) + + for request_idx, response in responses.items(): + if response.is_done: + generate_again = False + + for text_response in response.tokens: + encoded_text = text_response.next_token + response_text = await tokenizer.decode( + context, encoded_text + ) + if metrics: + if first_token: + first_token = False + metrics.signpost("first_token") + metrics.new_token() + if print_tokens: + print(response_text, end="", flush=True) + + # Yield to the event loop. If at no other point (e.g. + # tokenizer.decode which we await earlier does not yield to the + # event loop), it will be at this point that we'll receive a + # CancelledError if our future was canceled (e.g., we received a + # SIGINT). + await asyncio.sleep(0) + + finally: + if metrics: + metrics.signpost("end_generation") + + pipeline.release(context) + + if print_tokens: + print() + + +def generate_text_for_pipeline( + pipeline_config: PipelineConfig, + prompt: str, + image_urls: Iterable[str] = (), + num_warmups: int = 0, +) -> None: + # Run timed run & print results. + with TextGenerationMetrics(print_report=True) as metrics: + tokenizer, pipeline = PIPELINE_REGISTRY.retrieve(pipeline_config) + assert isinstance(pipeline, TokenGenerator) + if image_urls: + logger.info("Downloading images") + images = [requests.get(url).content for url in image_urls] + else: + images = None + + if num_warmups > 0: + logger.info("Running warmup") + for _ in range(num_warmups): + asyncio.run( + stream_text_to_console( + pipeline, + tokenizer, + prompt, + images, + num_steps=pipeline_config.max_num_steps, + metrics=None, + print_tokens=False, + ) + ) + + # Run and print results. + logger.info("Beginning text generation") + asyncio.run( + stream_text_to_console( + pipeline, + tokenizer, + prompt, + images, + num_steps=pipeline_config.max_num_steps, + metrics=metrics, + print_tokens=True, + ) + ) diff --git a/src/max/entrypoints/cli/list.py b/src/max/entrypoints/cli/list.py new file mode 100644 index 0000000000..e844a95fc0 --- /dev/null +++ b/src/max/entrypoints/cli/list.py @@ -0,0 +1,64 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# ===----------------------------------------------------------------------=== # +# +# This file is Modular Inc proprietary. +# +# ===----------------------------------------------------------------------=== # + +"""Utilities for exploring supported pipelines.""" + +import json + +from max.pipelines import PIPELINE_REGISTRY + + +def list_pipelines_to_console(): + print() + # Print human readable format + for arch in PIPELINE_REGISTRY.architectures.values(): + print() + print(f" Architecture: {arch.name}") + print() + print(" Example Huggingface Repo Ids: ") + for repo_id in arch.example_repo_ids: + print(f" {repo_id}") + + print() + for ( + encoding_name, + kv_cache_strategies, + ) in arch.supported_encodings.items(): + print( + f" Encoding Supported: {encoding_name}, with Cache Strategies: {kv_cache_strategies}" + ) + + print() + + +def list_pipelines_to_json(): + """Print the list of pipelines architecture options in JSON format.""" + architectures = {} + for arch in PIPELINE_REGISTRY.architectures.values(): + architectures[arch.name] = { + "example_repo_ids": list(arch.example_repo_ids), + "supported_encodings": [ + { + "encoding": encoding, + "supported_kv_cache_strategies": list(strategies), + } + for encoding, strategies in arch.supported_encodings.items() + ], + } + print(json.dumps({"architectures": architectures}, indent=2)) diff --git a/src/max/entrypoints/cli/metrics.py b/src/max/entrypoints/cli/metrics.py new file mode 100644 index 0000000000..b1b1cb1678 --- /dev/null +++ b/src/max/entrypoints/cli/metrics.py @@ -0,0 +1,225 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Metric-gathering utilities for the pipelines.""" + +import time +from typing import Any, Union + +import psutil + + +class TextGenerationMetrics: + """Metrics capturing and reporting for a text generation pipeline.""" + + prompt_size: int + output_size: int + startup_time: Union[float, str] + time_to_first_token: Union[float, str] + prompt_eval_throughput: Union[float, str] + eval_throughput: Union[float, str] + + _start_time: float + _signposts: dict[str, float] + _mem_usage_marker: dict[str, float] + _should_print_report: bool + _process: psutil.Process + _print_raw: bool + + def __init__(self, print_report: bool = False, print_raw: bool = False): + self._signposts = {} + self._mem_usage_marker = {} + self.batch_size = 1 + self.prompt_size = 0 + self.output_size = 0 + self._should_print_report = print_report + self._start_time = time.time() + self._process = psutil.Process() + self._print_raw = print_raw + + def __enter__(self): + return self + + def __exit__(self, *exc): + self._calculate_results() + if self._should_print_report: + self._print_report(self._print_raw) + + def signpost(self, name: str): + """Measure the current time and memory usage, tagging it with a name for later reporting.""" + self._signposts[name] = time.time() + self._mem_usage_marker[name] = (self._process.memory_info().rss) / ( + 1024 * 1024 * 1024 + ) + + def new_token(self): + """Report that a new token has been generated.""" + self.new_tokens(1) + + def new_tokens(self, num_tokens: int): + """Report that a num_tokens tokens have been generated.""" + self.output_size += num_tokens + + def _calculate_results(self): + begin_generation = self._signposts.get("begin_generation") + if begin_generation: + self.startup_time = ( + self._signposts["begin_generation"] - self._start_time + ) * 1000.0 + else: + self.startup_time = "n/a" + + # Calculate TTFT & context-encoding throughput + first_token = self._signposts.get("first_token") + if first_token and begin_generation: + self.time_to_first_token = ( + self._signposts["first_token"] + - self._signposts["begin_generation"] + ) * 1000.0 + self.prompt_eval_throughput = ( + self.prompt_size + * self.batch_size + / (self.time_to_first_token / 1000.0) + ) + else: + self.time_to_first_token = "n/a" + self.prompt_eval_throughput = "n/a" + + # Calculate TPOT & token-gen throughput + end_generation = self._signposts.get("end_generation") + if end_generation and first_token and self.output_size > 1: + generation_time = ( + self._signposts["end_generation"] + - self._signposts["first_token"] + ) + self.eval_throughput = ( + (self.output_size - 1) * self.batch_size / generation_time + ) + self.time_per_output_token: Any = ( + generation_time * 1000.0 / (self.output_size - 1) + ) + else: + self.eval_throughput = "n/a" + self.time_per_output_token = "n/a" + + if end_generation and begin_generation: + total_batch_time = ( + self._signposts["end_generation"] + - self._signposts["begin_generation"] + ) + self.requests_per_second: Any = self.batch_size / total_batch_time + self.total_exe_time: Any = total_batch_time * 1000 + else: + self.total_exe_time = "n/a" + self.requests_per_second = "n/a" + + def _print_report(self, print_raw=False): + print() + print("Prompt size:", self.prompt_size) + print("Output size:", self.output_size) + print("Startup time:", self.startup_time, "ms") + print("Time to first token:", self.time_to_first_token, "ms") + print( + "Prompt eval throughput (context-encoding):", + self.prompt_eval_throughput, + "tokens per second", + ) + print("Time per Output Token:", self.time_per_output_token, "ms") + print( + "Eval throughput (token-generation):", + self.eval_throughput, + "tokens per second", + ) + print("Total Latency:", self.total_exe_time, "ms") + print("Total Throughput:", self.requests_per_second, "req/s") + if print_raw: + print("=============raw stats=================") + for k, v in self._signposts.items(): + print( + f"Started {k} at {v} with memory" + f" {self._mem_usage_marker[k]} GB" + ) + + +class EmbeddingsMetrics: + prompt_size: int + startup_time: Union[float, str] + + _start_time: float + _signposts: dict[str, float] + _mem_usage_marker: dict[str, float] + _should_print_report: bool + _process: psutil.Process + _print_raw: bool + + def __init__(self, print_report: bool = False, print_raw: bool = False): + self._signposts = {} + self._mem_usage_marker = {} + self.batch_size = 1 + self.prompt_size = 0 + self._should_print_report = print_report + self._start_time = time.time() + self._process = psutil.Process() + self._print_raw = print_raw + + def __enter__(self): + return self + + def __exit__(self, *exc): + self._calculate_results() + if self._should_print_report: + self._print_report(self._print_raw) + + def signpost(self, name: str): + """Measure the current time and memory usage, tagging it with a name for later reporting.""" + self._signposts[name] = time.time() + self._mem_usage_marker[name] = (self._process.memory_info().rss) / ( + 1024 * 1024 * 1024 + ) + + def _calculate_results(self): + begin_generation = self._signposts.get("begin_encoding") + if begin_generation: + self.startup_time = ( + self._signposts["begin_encoding"] - self._start_time + ) * 1000.0 + else: + self.startup_time = "n/a" + + # Calculate TPOT & token-gen throughput + end_generation = self._signposts.get("end_generation") + if end_generation and begin_generation: + total_batch_time = ( + self._signposts["end_generation"] + - self._signposts["begin_generation"] + ) + self.requests_per_second: Any = self.batch_size / total_batch_time + self.total_exe_time: Any = total_batch_time * 1000 + else: + self.total_exe_time = "n/a" + self.requests_per_second = "n/a" + + def _print_report(self, print_raw=False): + print() + print("Prompt size:", self.prompt_size) + print("Startup time:", self.startup_time, "ms") + print("Total Latency:", self.total_exe_time, "ms") + print("Total Throughput:", self.requests_per_second, "req/s") + if print_raw: + print("=============raw stats=================") + for k, v in self._signposts.items(): + print( + f"Started {k} at {v} with memory" + f" {self._mem_usage_marker[k]} GB" + ) diff --git a/src/max/entrypoints/cli/serve.py b/src/max/entrypoints/cli/serve.py new file mode 100644 index 0000000000..148ddbbaf7 --- /dev/null +++ b/src/max/entrypoints/cli/serve.py @@ -0,0 +1,115 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +"""Utilities for serving cli.""" + +import functools +import logging +from typing import Optional, Union + +import uvloop +from max.pipelines import PIPELINE_REGISTRY, PipelineConfig, PipelineTask +from max.pipelines.kv_cache import KVCacheStrategy +from max.serve.api_server import ( + ServingTokenGeneratorSettings, + fastapi_app, + fastapi_config, +) +from max.serve.config import Settings +from max.serve.pipelines.llm import batch_config_from_pipeline_config +from max.serve.pipelines.performance_fake import ( + PerformanceFakingPipelineTokenizer, + get_performance_fake, +) +from transformers import AutoTokenizer +from uvicorn import Server + +logger = logging.getLogger(__name__) + + +def serve_pipeline( + pipeline_config: PipelineConfig, + performance_fake: str = "none", + profile: bool = False, + batch_timeout: float = 0.0, + model_name: Union[str, None] = None, + failure_percentage: Optional[int] = None, +): + # Initialize settings + settings = Settings(MAX_SERVE_USE_HEARTBEAT=False) + + # TODO: make validate_pipeline_config more generic or cleanly handle the + # case where this is a generalized model unsupported by MAX + if pipeline_config.architecture in PIPELINE_REGISTRY.architectures: + # Retrieve tokenizer and pipeline. + pipeline_config = PIPELINE_REGISTRY.validate_pipeline_config( + pipeline_config + ) + + # TODO: This is a workaround to support embeddings generation until the + # changes to tie pipelines to tasks is complete. This will be removed. + pipeline_task = PipelineTask.TEXT_GENERATION + if pipeline_config.model_path == "sentence-transformers/all-mpnet-base-v2": + pipeline_task = PipelineTask.EMBEDDINGS_GENERATION + + if performance_fake == "none": + logger.info(f"Starting server using {pipeline_config.model_path}") + # Load tokenizer and pipeline from PIPELINE_REGISTRY. + tokenizer, pipeline_factory = PIPELINE_REGISTRY.retrieve_factory( + pipeline_config, + task=pipeline_task, + ) + else: + logger.info( + f"Starting server using performance fake {performance_fake}." + ) + tokenizer = PerformanceFakingPipelineTokenizer( + AutoTokenizer.from_pretrained(pipeline_config.model_path) + ) + pipeline_factory = functools.partial( + get_performance_fake, + performance_fake, # type: ignore + failure_percentage, + ) + + pipeline_config.cache_strategy = KVCacheStrategy.CONTINUOUS + + # Load batch config. + batch_config = batch_config_from_pipeline_config( + pipeline_config=pipeline_config, + pipeline_task=pipeline_task, + batch_timeout=batch_timeout, + ) + + # If explicit model name is not provided, set to model_path. + if model_name is None: + model_name = pipeline_config.model_path + assert model_name is not None + + pipeline_settings = ServingTokenGeneratorSettings( + model_name=model_name, + model_factory=pipeline_factory, + pipeline_config=batch_config, + tokenizer=tokenizer, + ) + + # Intialize and serve webserver. + app = fastapi_app( + settings, + pipeline_settings, + ) + config = fastapi_config(app=app, server_settings=settings) + + server = Server(config) + uvloop.run(server.serve()) diff --git a/src/max/entrypoints/llm.py b/src/max/entrypoints/llm.py new file mode 100644 index 0000000000..5f745b72c1 --- /dev/null +++ b/src/max/entrypoints/llm.py @@ -0,0 +1,185 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""A high level interface for interacting with LLMs built from MAX pipelines""" + +from __future__ import annotations + +import asyncio +import queue +import threading +from queue import Queue +from threading import Thread +from typing import Optional, Sequence + +import tqdm +from max.pipelines.config import PipelineConfig +from max.pipelines.registry import PIPELINE_REGISTRY +from max.serve.config import Settings +from max.serve.pipelines.llm import ( + TokenGeneratorPipeline, + TokenGeneratorRequest, + batch_config_from_pipeline_config, +) +from max.serve.pipelines.model_worker import start_model_worker +from max.serve.pipelines.telemetry_worker import start_telemetry_consumer +from max.serve.scheduler.process_control import ProcessControl + +RequestQueue = Queue[tuple[Sequence[str], Optional[int], bool]] +ResponseQueue = Queue[list[str]] + + +# For now, the LLM class only supports the direct token generation use case. +# Long term, there are multiple other potential use cases to support. +# This class loosely mirrors vllm.LLM for offline inference: https://docs.vllm.ai/en/stable/dev/offline_inference/llm.html +class LLM: + """A high level interface for interacting with LLMs.""" + + _pc: ProcessControl + _async_runner: Thread + _request_queue: RequestQueue + _response_queue: ResponseQueue + + def __init__(self, settings: Settings, pipeline_config: PipelineConfig): + self._pc = ProcessControl(threading, "LLM") + self._request_queue = Queue() + self._response_queue = Queue() + self._async_runner = Thread( + target=_run_async_worker, + args=( + self._pc, + pipeline_config, + self._request_queue, + self._response_queue, + settings, + ), + ) + self._async_runner.start() + # TODO: set a timeout on wait + self._pc.started_event.wait() + + def __del__(self): + self._pc.set_canceled() + self._async_runner.join() + + def generate( + self, + prompts: str | Sequence[str], + max_new_tokens: int | None = 100, + use_tqdm: bool = True, + ) -> list[str]: + if isinstance(prompts, str): + # Handle the degenerate case where the users just passes in a single string + return self.generate((prompts,), max_new_tokens, use_tqdm) + + self._request_queue.put((prompts, max_new_tokens, use_tqdm)) + return self._response_queue.get() + + +def _run_async_worker( + pc: ProcessControl, + pipeline_config: PipelineConfig, + request_queue: RequestQueue, + response_queue: ResponseQueue, + settings: Settings, +): + asyncio.run( + _async_worker( + pc, + pipeline_config, + request_queue, + response_queue, + settings, + ) + ) + + +async def _async_worker( + pc: ProcessControl, + pipeline_config: PipelineConfig, + request_queue: RequestQueue, + response_queue: ResponseQueue, + settings: Settings, +): + tokenizer, model_factory = PIPELINE_REGISTRY.retrieve_factory( + pipeline_config + ) + batch_config = batch_config_from_pipeline_config(pipeline_config) + model_name = pipeline_config.model_path + + async with start_telemetry_consumer(settings) as metric_client: + async with start_model_worker( + model_factory=model_factory, + batch_config=batch_config, + settings=settings, + metric_client=metric_client, + ) as engine_queue: + # Start the model worker process. + # Create dynamic and continuous batching workers and associated queues + # to feed the model worker process. + async with TokenGeneratorPipeline( + model_name=model_name, + tokenizer=tokenizer, + engine_queue=engine_queue, + ) as pipeline: + pc.set_started() + while True: + pc.beat() + if pc.is_canceled(): + break + + try: + (prompts, max_new_tokens, use_tqdm) = request_queue.get( + timeout=0.3 + ) + + if use_tqdm: + pbar = tqdm.tqdm(total=len(prompts)) + + # Lambda to do a full text generation for a request. + async def all_tokens( + i: int, + prompt: str, + ) -> tuple[int, str]: + request = TokenGeneratorRequest( + id=str(i), + index=0, + model_name=model_name, + prompt=prompt, + max_new_tokens=max_new_tokens, + ) + + # Generate this request until complete + tokens = await pipeline.all_tokens(request) + if use_tqdm: + pbar.update(1) + return (i, "".join(t.decoded_token for t in tokens)) + + all_tokens_tasks = [ + all_tokens(i, prompt) + for i, prompt in enumerate(prompts) + ] + responses = [""] * len(prompts) + for i, response in await asyncio.gather( + *all_tokens_tasks + ): + responses[i] = response + + if use_tqdm: + pbar.close() + + response_queue.put(responses) + + except queue.Empty: + continue + pc.set_completed() diff --git a/src/max/entrypoints/pipelines.py b/src/max/entrypoints/pipelines.py new file mode 100644 index 0000000000..bdd102aa9f --- /dev/null +++ b/src/max/entrypoints/pipelines.py @@ -0,0 +1,274 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +import functools +import logging +import os +import signal + +import click +from max.entrypoints.cli import ( + generate_text_for_pipeline, + list_pipelines_to_console, + list_pipelines_to_json, + pipeline_config_options, + pipeline_encode, + serve_pipeline, +) +from max.pipelines import PIPELINE_REGISTRY, PipelineConfig +from max.pipelines.architectures import register_all_models +from max.serve.config import Settings +from max.serve.telemetry.common import configure_logging, configure_metrics + +logger = logging.getLogger(__name__) + + +class ModelGroup(click.Group): + def get_command(self, ctx, cmd_name): + rv = click.Group.get_command(self, ctx, cmd_name) + if rv is not None: + return rv + supported = ", ".join(self.list_commands(ctx)) + ctx.fail( + f"Command not supported: {cmd_name}\nSupported commands:" + f" {supported}" + ) + + +@click.command(cls=ModelGroup) +def main(): + settings = Settings() + configure_logging(settings) + configure_metrics(settings) + register_all_models() + + +def common_server_options(func): + @click.option( + "--profile-serve", + is_flag=True, + show_default=True, + default=False, + help=( + "Whether to enable pyinstrument profiling on the serving endpoint." + ), + ) + @click.option( + "--performance-fake", + type=click.Choice(["none", "no-op", "speed-of-light", "vllm"]), + default="none", + help="Fake the engine performance (for benchmarking)", + ) + @click.option( + "--batch-timeout", + type=float, + default=0.0, + help="Custom timeout for any particular batch.", + ) + @click.option( + "--model-name", + type=str, + help="Deprecated, please use `model_path` instead. Optional model alias for serving the model.", + ) + @click.option( + "--sim-failure", + type=int, + default=0, + help="Simulate fake-perf with failure percentage", + ) + @functools.wraps(func) + def wrapper(*args, **kwargs): + return func(*args, **kwargs) + + return wrapper + + +@main.command(name="serve") +@pipeline_config_options +@common_server_options +def cli_serve( + profile_serve, + performance_fake, + batch_timeout, + model_name, + sim_failure, + **config_kwargs, +): + """Start a model serving endpoint for inference. + + This command launches a server that can handle inference requests for the + specified model. The server supports various performance optimization + options and monitoring capabilities. + """ + # Initialize config, and serve. + pipeline_config = PipelineConfig(**config_kwargs) + failure_percentage = None + if sim_failure > 0: + failure_percentage = sim_failure + serve_pipeline( + pipeline_config=pipeline_config, + profile=profile_serve, + performance_fake=performance_fake, + batch_timeout=batch_timeout, + model_name=model_name, + failure_percentage=failure_percentage, + ) + + +@main.command(name="generate") +@pipeline_config_options +@click.option( + "--prompt", + type=str, + default="I believe the meaning of life is", + help="The text prompt to use for further generation.", +) +@click.option( + "--image_url", + type=str, + multiple=True, + default=[], + help=( + "Images to include along with prompt, specified as URLs." + " The images are ignored if the model does not support" + " image inputs." + ), +) +@click.option( + "--num-warmups", + type=int, + default=0, + show_default=True, + help="# of warmup iterations to run before the final timed run.", +) +def cli_pipeline(prompt, image_url, num_warmups, **config_kwargs): + """Generate text using the specified model. + + This command runs text generation using the loaded model, optionally + accepting image inputs for multimodal models. + """ + # Replit model_paths are kinda broken due to transformers + # version mismatch. We manually update trust_remote_code to True + # because the modularai version does not have the custom Python code needed + # Without this, we get: + # ValueError: `attn_type` has to be either `multihead_attention` or + # `multiquery_attention`. Received: grouped_query_attention + # Another reason why we override this flag here is because at PipelineConfig + # instantiation below, we'll call AutoConfig.from_pretrained, which will + # trigger the error above if not set to True. + if "replit" in config_kwargs["model_path"]: + config_kwargs["trust_remote_code"] = True + + if config_kwargs["max_new_tokens"] == -1: + # Limit generate default max_new_tokens to 100. + config_kwargs["max_new_tokens"] = 100 + + # Load tokenizer & pipeline. + pipeline_config = PipelineConfig(**config_kwargs) + generate_text_for_pipeline( + pipeline_config, + prompt=prompt, + image_urls=image_url, + num_warmups=num_warmups, + ) + + +@main.command(name="encode") +@pipeline_config_options +@click.option( + "--prompt", + type=str, + default="I believe the meaning of life is", + help="The text prompt to use for further generation.", +) +@click.option( + "--num-warmups", + type=int, + default=0, + show_default=True, + help="# of warmup iterations to run before the final timed run.", +) +def encode(prompt, num_warmups, **config_kwargs): + """Encode text input into model embeddings. + + This command processes the input text through the model's encoder, producing + embeddings that can be used for various downstream tasks. + """ + # Load tokenizer & pipeline. + pipeline_config = PipelineConfig(**config_kwargs) + pipeline_encode( + pipeline_config, + prompt=prompt, + num_warmups=num_warmups, + ) + + +@main.command(name="warm-cache") +@pipeline_config_options +def cli_warm_cache(**config_kwargs) -> None: + """Load and compile the model to prepare caches. + + This command is particularly useful in combination with + --save-to-serialized-model-path. Providing that option to this command + will result in a compiled model being stored to that path. Subsequent + invocations of other commands can then use --serialized-model-path to + reuse the previously-compiled model. + + Even without --save-to-serialized-model-path, this command will as a side + effect warm the Hugging Face cache and in some cases, MAX compilation + caches. + """ + pipeline_config = PipelineConfig(**config_kwargs) + _ = PIPELINE_REGISTRY.retrieve(pipeline_config) + + +@main.command(name="list") +@click.option( + "--json", + is_flag=True, + show_default=True, + default=False, + help="Print the list of pipelines options in JSON format.", +) +def cli_list(json): + """List available pipeline configurations and models. + + This command displays information about all registered pipelines and their + configurations. Output can be formatted as human-readable text or JSON. + """ + if json: + list_pipelines_to_json() + else: + list_pipelines_to_console() + + +if __name__ == "__main__": + if directory := os.getenv("BUILD_WORKSPACE_DIRECTORY"): + os.chdir(directory) + + # Workaround for https://github.com/buildbuddy-io/buildbuddy/issues/8326 + if ( + signal.getsignal(signal.SIGINT) == signal.SIG_IGN + and signal.getsignal(signal.SIGTERM) == signal.SIG_IGN + and signal.getsignal(signal.SIGQUIT) == signal.SIG_IGN + ): + # For SIGINT, Python remaps SIG_DFL to default_int_handler on startup. + # We do the same here to retain the same behavior we would get if we + # started normally. (SIG_DFL terminates the process immediately; + # default_int_handler raises KeyboardInterrupt.) + signal.signal(signal.SIGINT, signal.default_int_handler) + signal.signal(signal.SIGTERM, signal.SIG_DFL) + signal.signal(signal.SIGQUIT, signal.SIG_DFL) + + main() diff --git a/src/max/magic.lock b/src/max/magic.lock new file mode 100644 index 0000000000..3c530fd9ab --- /dev/null +++ b/src/max/magic.lock @@ -0,0 +1,9000 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + build_number: 16 + sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 + md5: 6168d71addc746e8f2b8d57dfd2edcea + depends: + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23712 + timestamp: 1650670790230 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.6-pyhd8ed1ab_0.conda + sha256: a2a5579be9fb21f9397f51a4ba09599782c93e9117951a5105d8ee4b80d648c1 + md5: 5b7d3ceeb36e8e6783eae78acd4c18e1 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 19236 + timestamp: 1739175837817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.13-py312h178313f_0.conda + sha256: 985834edea972ddf6c35ab4185fb228440efb845a70a88182895f8f90df4a4c9 + md5: 0ea623ee1f29a7e1d703bc3b0ef82306 + depends: + - __glibc >=2.17,<3.0.a0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 915558 + timestamp: 1740482064204 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.13-py312hcc812fe_0.conda + sha256: ca1fa0450decaca810db4b9f5ff1dd00c710fd89767c764a771b5d4ce7a152b0 + md5: 7e952a2d83ebfb371515c010acc110c7 + depends: + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - libgcc >=13 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux + license: MIT AND Apache-2.0 + license_family: Apache + size: 904149 + timestamp: 1740481643315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.13-py312h998013c_0.conda + sha256: 84f8c35912bce8c9ee979454a685ec0497fbccd7da86351e8d774ae3e7456055 + md5: d575ea7d96ce2c9fed370d85d3ef464e + depends: + - __osx >=11.0 + - aiohappyeyeballs >=2.3.0 + - aiosignal >=1.1.2 + - attrs >=17.3.0 + - frozenlist >=1.1.1 + - multidict >=4.5,<7.0 + - propcache >=0.2.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx + license: MIT AND Apache-2.0 + license_family: Apache + size: 885919 + timestamp: 1740482022806 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 + depends: + - frozenlist >=1.1.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda + sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 + md5: 2934f256a8acfe48f6ebb4fce6cde29c + depends: + - python >=3.9 + - typing-extensions >=4.0.0 + license: MIT + license_family: MIT + size: 18074 + timestamp: 1733247158254 +- conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.5 + constrains: + - trio >=0.26.1 + - uvloop >=0.21 + license: MIT + license_family: MIT + size: 115305 + timestamp: 1736174485476 +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-25.1.0-pyh71513ae_0.conda + sha256: 1f267886522dfb9ae4e5ebbc3135b5eb13cff27bdbfe8d881a4d893459166ab4 + md5: 2cc3f588512f04f3a0c64b4e9bedc02d + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 56370 + timestamp: 1737819298139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.1-h205f482_0.conda + sha256: ebe5e33249f37f6bb481de99581ebdc92dbfcf1b6915609bcf3c9e78661d6352 + md5: 9c500858e88df50af3cc883d194de78a + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 108111 + timestamp: 1737509831651 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-auth-0.8.1-hb7ec8d5_0.conda + sha256: e1e6c9267a4d9af30b1d28c11a9041b17b7840ff83ef08614145a2a4f444f5b4 + md5: 2630f030652970a5531e492f6b2a6dd3 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 112658 + timestamp: 1737509863269 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.8.1-hfc2798a_0.conda + sha256: 5a60d196a585b25d1446fb973009e4e648e8d70beaa2793787243ede6da0fd9a + md5: 0abd67c0f7b60d50348fbb32fef50b65 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 92562 + timestamp: 1737509877079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 47601 + timestamp: 1733991564405 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-cal-0.8.1-h740c5af_3.conda + sha256: c5c7961d48ca7320ed3560c036f7aa5244df4b85d9657f70aacc5faba3e1509a + md5: 57ed2c445d7ef01d121b9bcea0522913 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 50036 + timestamp: 1733991581303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.8.1-hc8a0bd2_3.conda + sha256: 1f44be36e1daa17b4b081debb8aee492d13571084f38b503ad13e869fef24fe4 + md5: 8b0ce61384e5a33d2b301a64f3d22ac5 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 39925 + timestamp: 1733991649383 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 236574 + timestamp: 1733975453350 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-common-0.10.6-h86ecc28_0.conda + sha256: 57288ec5df35781bea8fc6a8c9099cad6695b747784fc1b8862a0f9e5b3bf5ab + md5: fef806a0f6de853670c746bbece01966 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 259031 + timestamp: 1733975520465 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.10.6-h5505292_0.conda + sha256: 3bde135c8e74987c0f79ecd4fa17ec9cff0d658b3090168727ca1af3815ae57a + md5: 145e5b4c9702ed279d7d68aaf096f77d + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 221863 + timestamp: 1733975576886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19086 + timestamp: 1733991637424 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-compression-0.3.0-h0f0193d_5.conda + sha256: 3f05d19f68ef800f33d44ea2a4211003124076516c8469abc7d432236344df53 + md5: 3a1421d12435df5b4c412cc4c8fac64d + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19740 + timestamp: 1733991625201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.0-hc8a0bd2_5.conda + sha256: 47b2813f652ce7e64ac442f771b2a5f7d4af4ad0d07ff51f6075ea80ed2e3f09 + md5: a8b6c17732d14ed49d0e9b59c43186bc + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 18068 + timestamp: 1733991869211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 54003 + timestamp: 1734024480949 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-event-stream-0.5.0-hcbd8f92_11.conda + sha256: 79aa363c71c891a27496c0498f8d498b2ddc87b3ccb3b6c9da5b50b05936ebb8 + md5: e0772c59af4243a9b2565baa5d79e5b6 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55207 + timestamp: 1734024546663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.0-h54f970a_11.conda + sha256: f0667935f4e0d4c25e0e51da035640310b5ceeb8f723156734439bde8b848d7d + md5: ba41238f8e653998d7d2f42e3a8db054 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 47078 + timestamp: 1734024749727 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-http-0.9.2-h3df160d_4.conda + sha256: 3a1d2d332945306be9d49e569b95e4cc172d825f10e88715513a172f28ebb59e + md5: 28f00aa7fd9556c4c461328cf146c20b + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 190586 + timestamp: 1734008442362 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.9.2-h96aa502_4.conda + sha256: 22e4737c8a885995b7c1ae1d79c1f6e78d489e16ec079615980fdde067aeaf76 + md5: 495c93a4f08b17deb3c04894512330e6 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 152983 + timestamp: 1734008451473 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h173a860_6.conda + sha256: 335d822eead0a097ffd23677a288e1f18ea22f47a92d4f877419debb93af0e81 + md5: 9a063178f1af0a898526cc24ba7be486 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 157263 + timestamp: 1737207617838 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-io-0.15.3-hfd5ba81_6.conda + sha256: d8adfde05cee11057d99c3802e84b2300430a7c7c3c9936165d1d4b25ef59d91 + md5: 4e6771b45cb2b035c62d023dbf0dc000 + depends: + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.11,<1.5.12.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 160933 + timestamp: 1737207637279 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.15.3-haba67d1_6.conda + sha256: 73722dd175af78b6cbfa033066f0933351f5382a1a737f6c6d9b8cfa84022161 + md5: d02e8f40ff69562903e70a1c6c48b009 + depends: + - __osx >=11.0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 136048 + timestamp: 1737207681224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 194672 + timestamp: 1734025626798 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-mqtt-0.11.0-h5f50e26_12.conda + sha256: ffeb9100cc8fd4093e1a6fdfd938bc4a396dd77480b7fb17aa42855a4d5e2c70 + md5: 031ca33115d4b1eeb43f435d6215778c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 169516 + timestamp: 1734025167885 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.11.0-h24f418c_12.conda + sha256: 96575ea1dd2a9ea94763882e40a66dcbff9c41f702bf37c9514c4c719b3c11dd + md5: c072045a6206f88015d02fcba1705ea1 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 134371 + timestamp: 1734025379525 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.9-he1b24dc_1.conda + sha256: 15fbdedc56850f8be5be7a5bcaea1af09c97590e631c024ae089737fc932fc42 + md5: caafc32928a5f7f3f7ef67d287689144 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 115413 + timestamp: 1737558687616 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-s3-0.7.9-h05b070f_1.conda + sha256: 9e7857fbc33eddc291fa09890ce468a92485d3e3e127bc00bbd1803e34121f84 + md5: e0a2869195f069db88b8932f5b00bee5 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 117875 + timestamp: 1737558720047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.7.9-hf37e03c_1.conda + sha256: 92e8ca4eefcbbdf4189584c9410382884a06ed3030e5ecaac656dab8c95e6a80 + md5: de65f5e4ab5020103fe70a0eba9432a0 + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 98731 + timestamp: 1737558731831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.2-h4e1184b_0.conda + sha256: 0424e380c435ba03b5948d02e8c958866c4eee50ed29e57f99473a5f795a4cfc + md5: dcd498d493818b776a77fbc242fbf8e4 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 55911 + timestamp: 1736535960724 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-c-sdkutils-0.2.2-h0f0193d_0.conda + sha256: fba38e469457764afcb94aa84d4d7788e6b5fa1554d34b05c904d2245fdd3c81 + md5: a78928881c652facde2a13ec6e776f3c + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 58221 + timestamp: 1736536003041 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.2-hc8a0bd2_0.conda + sha256: ea4f0f1e99056293c69615f581a997d65ba7e229e296e402e0d8ef750648a5b5 + md5: e7b5498ac7b7ab921a907be38f3a8080 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 49872 + timestamp: 1736536152332 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72762 + timestamp: 1733994347547 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-checksums-0.2.2-h0f0193d_4.conda + sha256: 9f1e3635a587bcf92b61d88c7af7d24cd89c147c6d0ae58afbde08e65bcf48da + md5: 3bd35b0adab3d743f09e0252cc441d6b + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 72154 + timestamp: 1733994384415 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.2-hc8a0bd2_4.conda + sha256: 215086d95e8ff1d3fcb0197ada116cc9d7db1fdae7573f5e810d20fa9215b47c + md5: e70e88a357a3749b67679c0788c5b08a + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 70186 + timestamp: 1733994496998 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.9-he0e7f3f_2.conda + sha256: c1930569713bd5231d48d885a5e3707ac917b428e8f08189d14064a2bb128adc + md5: 8a4e6fc8a3b285536202b5456a74a940 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 353222 + timestamp: 1737565463079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-crt-cpp-0.29.9-hab3ce66_2.conda + sha256: c3884fb10e0fd9be5c13256cabcda1afa9d2fcf8878c67214d02fc344509857d + md5: 875968ebffe992b68faf2caebbf32f02 + depends: + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 283812 + timestamp: 1737565480034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.29.9-ha81f72f_2.conda + sha256: ed5f1d19aad53787fdebe13db4709c97eae2092536cc55d3536eba320c4286e1 + md5: c9c034d3239bf25687ca4dd985007ecd + depends: + - __osx >=11.0 + - aws-c-auth >=0.8.1,<0.8.2.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.9,<0.7.10.0a0 + - aws-c-sdkutils >=0.2.2,<0.2.3.0a0 + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 235976 + timestamp: 1737565563139 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.489-h4d475cb_0.conda + sha256: 08d6b7d2ed17bfcc7deb903c7751278ee434abdb27e3be0dceb561f30f030c75 + md5: b775e9f46dfa94b228a81d8e8c6d8b1d + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3144364 + timestamp: 1737576036746 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aws-sdk-cpp-1.11.489-h88461e4_0.conda + sha256: 88353e82b053763168cddbe2f88048defc1c97b3dad0966fbe8c4fa7aa592c7e + md5: e725d8fa77a6a5f38a78c5de914a5f40 + depends: + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3015109 + timestamp: 1737575993030 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.489-h0e5014b_0.conda + sha256: d82451530ddf363d8bb31a8a7391bb9699f745e940ace91d78c0e6170deef03c + md5: 156cfb45a1bb8cffc81e59047bb34f51 + depends: + - __osx >=11.0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2874126 + timestamp: 1737577023623 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-core-cpp-1.14.0-h1887c18_0.conda + sha256: 8967b3ccee4d74e61f6ec82dd8efb9deb854ee7ba012dfe767b7a92e0ac77724 + md5: e0c3a906a41be769f0ae20ca3e31cfc0 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 338650 + timestamp: 1728055589907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.14.0-hd50102c_0.conda + sha256: f5b91329ed59ffc0be8747784c6e4cc7e56250c54032883a83bc11808ef6a87e + md5: f093a11dcf3cdcca010b20a818fcc6dc + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 294299 + timestamp: 1728054014060 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-identity-cpp-1.10.0-h47b0b28_0.conda + sha256: 1c72423b9beba167d2f01b80dc204da77240a8266f1edb3d89510c852b300d69 + md5: 94e73a7877743a85c57091d8afab2348 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 217132 + timestamp: 1728488096615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.10.0-hc602bab_0.conda + sha256: bde446b916fff5150606f8ed3e6058ffc55a3aa72381e46f1ab346590b1ae40a + md5: d7b71593a937459f2d4b67e1a4727dc2 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 166907 + timestamp: 1728486882502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-blobs-cpp-12.13.0-h185ecfd_1.conda + sha256: 280ec70009a92626054f58e45b168fce393e71a9710587488bd8401628cda481 + md5: 221e1e5ecb2643e113f32b3229d5ba33 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 502934 + timestamp: 1728580241002 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.13.0-h7585a09_1.conda + sha256: 08d52d130addc0fb55d5ba10d9fa483e39be25d69bac7f4c676c2c3069207590 + md5: 704238ef05d46144dae2e6b5853df8bc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 438636 + timestamp: 1728578216193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-common-cpp-12.8.0-h1b94036_1.conda + sha256: 146e76aac169e3dbdce5d3b142b7930ac643795c765e7655d1989905ec7d3231 + md5: 793b1080ab2d958980f137a8643cd6e8 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 140832 + timestamp: 1728565334900 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.8.0-h9ca1f76_1.conda + sha256: 77ab04e8fe5636a2de9c718f72a43645f7502cd208868c8a91ffba385547d585 + md5: 7a187cd7b1445afc80253bb186a607cc + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libcxx >=17 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 121278 + timestamp: 1728563418777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/azure-storage-files-datalake-cpp-12.12.0-h37d6d07_1.conda + sha256: 4079c617a75682e49bae63670d58fd6078ccfbbe55ca1f994acab3a74ab6bbcc + md5: b724f3b4b7f4e9b36c58cbe3ed8610a2 + depends: + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 260547 + timestamp: 1728730924071 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-hcdd55da_1.conda + sha256: f48523f8aa0b5b80f45a92f0556b388dd96f44ac2dc2f44a01d08c1822eec97d + md5: c49fbc5233fcbaa86391162ff1adef38 + depends: + - __osx >=11.0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libcxx >=17 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 196032 + timestamp: 1728729672889 +- conda: https://conda.anaconda.org/conda-forge/noarch/backoff-2.2.1-pyhd8ed1ab_1.conda + sha256: f334115c6b0c6c2cd0d28595365f205ec7eaa60bcc5ff91a75d7245f728be820 + md5: a38b801f2bcc12af80c2e02a9e4ce7d9 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 18816 + timestamp: 1733771192649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda + sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d + md5: e1e9727063057168d95f27a032acd0a4 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 h86ecc28_2 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 356878 + timestamp: 1725267878508 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb + md5: 56398c28220513b9ea13d7b450acfb20 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 189884 + timestamp: 1720974504976 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2025.1.31-hcefe29a_0.conda + sha256: 66c6408ee461593cfdb2d78d82e6ed74d04a04ccb51df3ef8a5f35148c9c6eec + md5: 462cb166cd2e26a396f856510a3aff67 + arch: aarch64 + platform: linux + license: ISC + size: 158290 + timestamp: 1738299057652 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda + sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 + md5: 1a256e5581b1099e9295cb84d53db3ea + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 312892 + timestamp: 1725561779888 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-crt-tools-12.8.61-ha770c72_1.conda + sha256: 80a2ddb433b3d3b0abbf97febf5504cbda451e19f3a504936ef961209c647238 + md5: a5c66c2b4b7fb464129a1163a49c9e53 + depends: + - cuda-version >=12.8,<12.9.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27215 + timestamp: 1738873838328 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-crt-tools-12.8.61-h579c4fd_1.conda + sha256: 78bfe492a98c2460960e2e9f7bef39326a889e2abb54debc9959ec7494822717 + md5: 04dbd57df8678150c7e5b37da647c702 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 27415 + timestamp: 1738873896497 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.8.57-h5888daf_1.conda + sha256: cc58a25d7ab38d8d27aa88b151dd55406cdfe5429b03419a13af8e9aca2f2596 + md5: cc1b22f4f3734a8b0e80aa874e9f1744 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.8.57 h3f2d84a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22706 + timestamp: 1739215390850 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cudart-12.8.57-h3ae8b8a_1.conda + sha256: 5790a30774eab55f84afe42ec9e6d81298b31ae3cf2584e245958bc742cfd280 + md5: 3d8375d2e0d1957db66cfe319c76adeb + depends: + - cuda-cudart_linux-aarch64 12.8.57 h3ae8b8a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22831 + timestamp: 1739215503338 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.8.57-h3f2d84a_1.conda + sha256: a60faad361f3f21a387d8c684114258de63305703db13c76417b5cf0956205a6 + md5: dff7d2f9a0ee9ab03bfff88fff9621da + depends: + - cuda-version >=12.8,<12.9.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 192905 + timestamp: 1739215375478 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-aarch64-12.8.57-h3ae8b8a_1.conda + sha256: 70caf7f62c2a645d9ef487fe2f41433145e11786e91fd87dfed6338babdefe04 + md5: aa86deee0e8c93f71fde92db26339407 + depends: + - cuda-version >=12.8,<12.9.0a0 + constrains: + - arm-variant * sbsa + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 207838 + timestamp: 1739215492480 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cuobjdump-12.8.55-hbd13f7d_0.conda + sha256: 424bea1fdfca90acf5c8c255e4b648315e8a07a8065a234dd4b28108d7514d59 + md5: 5ab6c95d69311e911bd98d48118ce047 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 232521 + timestamp: 1737670501800 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cuobjdump-12.8.55-h05609ea_0.conda + sha256: 1b17aae0d05f839d7a5e08e40edbca2666954db95ed38b85d4c4aca9e1e568ca + md5: dcf96c9ad817538ebdcb1430f4510328 + depends: + - cuda-nvdisasm + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 235857 + timestamp: 1737670525095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.8.57-hbd13f7d_0.conda + sha256: ff8fb3a51c18a43e8de90df30094e0ae4bb4ae0f35a473aa2f8ab052c5318816 + md5: 3a98112d0341979bbb2e75e71b36a4c0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1845047 + timestamp: 1737666283622 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-cupti-12.8.57-h5101a13_0.conda + sha256: e0b0fe34fcb50c9c6e600bc5e29c7f65e5d09535eeeefae737819f71928c4813 + md5: 619e88e4871378089566f235461b4677 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1620833 + timestamp: 1737666390106 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvcc-tools-12.8.61-he02047a_1.conda + sha256: 2436f383674e29a788f17e8aa5fc9c86819e122725d2291eda63260f15100496 + md5: fb406ed72a4f4af7acfd591c6787b903 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-crt-tools 12.8.61 ha770c72_1 + - cuda-nvvm-tools 12.8.61 he02047a_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - gcc_impl_linux-64 >=6,<15.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 25714998 + timestamp: 1738873949175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvcc-tools-12.8.61-h614329b_1.conda + sha256: a82b060291312d286b06ccd04f61023c08afe66014fe356b1c594285e61b0b7b + md5: 8c753c56765e2c8babc05cb5e4848c51 + depends: + - cuda-crt-tools 12.8.61 h579c4fd_1 + - cuda-nvvm-tools 12.8.61 h614329b_1 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + - gcc_impl_linux-aarch64 >=6,<15.0a0 + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22320853 + timestamp: 1738874044293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvdisasm-12.8.55-hbd13f7d_0.conda + sha256: 53377e888305b28e5c249b423291de37478ea465b2e4ba0247584491999a1284 + md5: 74f716637584db374166bf8b04f57a13 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5122708 + timestamp: 1737667356055 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvdisasm-12.8.55-h5101a13_0.conda + sha256: 292b078110ea97c19401a9fbdf359325d472a3b5c164c256846da82e6b3e3a9e + md5: 3829037f6474309e563bc86ea5344669 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 5077857 + timestamp: 1737667422732 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvvm-tools-12.8.61-he02047a_1.conda + sha256: a604b228e8aa84c3739c1b285857bf2c206a3d0ed7798216f5f651a0ac257ae3 + md5: f82afee87477746249975726453c56bf + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 24622383 + timestamp: 1738873904778 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cuda-nvvm-tools-12.8.61-h614329b_1.conda + sha256: 9159c3b04c2eb7ed721e7a7ef6d7dec5b5bb58d5874d220299745034f10f5a28 + md5: 1f56d00ef41873791b9c6ab4642964b3 + depends: + - cuda-version >=12.8,<12.9.0a0 + - libgcc >=12 + - libstdcxx >=12 + constrains: + - arm-variant * sbsa + arch: aarch64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 23961474 + timestamp: 1738873988055 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.8-h5d125a7_3.conda + sha256: 6f93ceb66267e69728d83cf98673221f6b1f95a3514b3a97777cfd0ef8e24f3f + md5: 794eaca58880616a508dd6f6eb389266 + constrains: + - cudatoolkit 12.8|12.8.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21086 + timestamp: 1737663758355 +- conda: https://conda.anaconda.org/conda-forge/noarch/datasets-2.14.4-pyhd8ed1ab_0.conda + sha256: 7e09bd083a609138b780fcc4535924cb96814d2c908a36d4c64a2ba9ee3efe7f + md5: 3e087f072ce03c43a9b60522f5d0ca2f + depends: + - aiohttp + - dill >=0.3.0,<0.3.8 + - fsspec >=2021.11.1 + - huggingface_hub >=0.14.0,<1.0.0 + - importlib-metadata + - multiprocess + - numpy >=1.17 + - packaging + - pandas + - pyarrow >=8.0.0 + - python >=3.8.0 + - python-xxhash + - pyyaml >=5.1 + - requests >=2.19.0 + - tqdm >=4.62.1 + license: Apache-2.0 + license_family: Apache + size: 347303 + timestamp: 1691593908658 +- conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.2.18-pyhd8ed1ab_0.conda + sha256: d614bcff10696f1efc714df07651b50bf3808401fcc03814309ecec242cc8870 + md5: 0cef44b1754ae4d6924ac0eef6b9fdbe + depends: + - python >=3.9 + - wrapt <2,>=1.10 + license: MIT + license_family: MIT + size: 14382 + timestamp: 1737987072859 +- conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.3.7-pyhd8ed1ab_0.conda + sha256: 4ff20c6be028be2825235631c45d9e4a75bca1de65f8840c02dfb28ea0137c45 + md5: 5e4f3466526c52bc9af2d2353a1460bd + depends: + - python >=3.7 + license: BSD-3-Clause + license_family: BSD + size: 87553 + timestamp: 1690101185422 +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.7.0-pyhff2d567_1.conda + sha256: 3ec40ccf63f2450c5e6c7dd579e42fc2e97caf0d8cd4ba24aa434e6fc264eda0 + md5: 5fbd60d61d21b4bd2f9d7a48fe100418 + depends: + - python >=3.9,<4.0.0 + - sniffio + constrains: + - aioquic >=1.0.0 + - wmi >=1.5.1 + - httpx >=0.26.0 + - trio >=0.23 + - cryptography >=43 + - httpcore >=1.0.0 + - idna >=3.7 + - h2 >=4.1.0 + license: ISC + license_family: OTHER + size: 172172 + timestamp: 1733256829961 +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.2.0-pyhd8ed1ab_1.conda + sha256: b91a19eb78edfc2dbb36de9a67f74ee2416f1b5273dd7327abe53f2dbf864736 + md5: da16dd3b0b71339060cd44cb7110ddf9 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.9 + license: Unlicense + size: 44401 + timestamp: 1733300827551 +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.2.0-hd8ed1ab_1.conda + sha256: e0d0fdf587aa0ed0ff08b2bce3ab355f46687b87b0775bfba01cc80a859ee6a2 + md5: 0794f8807ff2c6f020422cacb1bd7bfa + depends: + - email-validator >=2.2.0,<2.2.1.0a0 + license: Unlicense + size: 6552 + timestamp: 1733300828176 +- conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e + depends: + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-0.115.8-pyh29332c3_0.conda + sha256: 5e1e3d5cf306d9b3b5fe0d45a9e8440e8770ba7e4a5fac1ac847ca693b0dc064 + md5: 753382711adab47269f0bfe994906bc4 + depends: + - python >=3.9 + - starlette >=0.40.0,<0.46.0 + - typing_extensions >=4.8.0 + - pydantic >=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - email_validator >=2.0.0 + - fastapi-cli >=0.0.5 + - httpx >=0.23.0 + - jinja2 >=3.1.5 + - python-multipart >=0.0.18 + - uvicorn-standard >=0.12.0 + - python + license: MIT + license_family: MIT + size: 77940 + timestamp: 1738326226051 +- conda: https://conda.anaconda.org/conda-forge/noarch/fastapi-cli-0.0.7-pyhd8ed1ab_0.conda + sha256: 300683731013b7221922339cd40430bb3c2ddeeb658fd7e37f5099ffe64e4db0 + md5: d960e0ea9e1c561aa928f6c4439f04c7 + depends: + - python >=3.9 + - rich-toolkit >=0.11.1 + - typer >=0.12.3 + - uvicorn-standard >=0.15.0 + license: MIT + license_family: MIT + size: 15546 + timestamp: 1734302408607 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h178313f_1.conda + sha256: 501e20626798b6d7f130f4db0fb02c0385d8f4c11ca525925602a4208afb343f + md5: fb986e1c089021979dc79606af78ef8f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60939 + timestamp: 1737645356438 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hcc812fe_1.conda + sha256: 84895c5e207e0cb2044f3607fb36b82eb8cb45f0a009d03dc04c777ed975757d + md5: 9090bf5c43e8011fb2e9a82a1db20cc3 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 60472 + timestamp: 1737645511278 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h998013c_1.conda + sha256: d503ac8c050abdbd129253973f23be34944978d510de78ef5a3e6aa1e3d9552d + md5: 5eb3715c7e3fa9b533361375bfefe6ee + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 57256 + timestamp: 1737645503377 +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2025.2.0-pyhd8ed1ab_0.conda + sha256: 7433b8469074985b651693778ec6f03d2a23fad9919a515e3b8545996b5e721a + md5: d9ea16b71920b03beafc17fcca16df90 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 138186 + timestamp: 1738501352608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gflags-2.2.2-h5ad3122_1005.conda + sha256: 28fe6b40b20454106d5e4ef6947cf298c13cc72a46347bbc49b563cd3a463bfa + md5: 4ff634d515abbf664774b5e1168a9744 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 106638 + timestamp: 1726599967617 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda + sha256: fd56ed8a1dab72ab90d8a8929b6f916a6d9220ca297ff077f8f04c5ed3408e20 + md5: 57a511a5905caa37540eb914dfcbf1fb + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 82090 + timestamp: 1726600145480 +- conda: https://conda.anaconda.org/conda-forge/noarch/gguf-0.14.0-pyh267e887_0.conda + sha256: 223a157e2ce9e1195eced1bd42041b8219cc61c0a135f428256cf2753cac8142 + md5: 3fb0305a9a6f1d7607db045fdc42f705 + depends: + - python >=3.8 + - numpy >=1.17 + - tqdm >=4.27 + - pyyaml >=5.1 + - sentencepiece >=0.1.98,<=0.2.0 + - python + license: MIT + license_family: MIT + size: 74687 + timestamp: 1737040120169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glog-0.7.1-h468a4a4_0.conda + sha256: 920795d4f775a9f47e91c2223e64847f0b212b3fedc56c137c5889e32efe8ba0 + md5: 08940a32c6ced3703d1412dd37df4f62 + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 145811 + timestamp: 1718284208668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda + sha256: 9fc77de416953aa959039db72bc41bfa4600ae3ff84acad04a7d0c1ab9552602 + md5: fef68d0a95aa5b84b5c1a4f6f3bf40e1 + depends: + - __osx >=11.0 + - gflags >=2.2.2,<2.3.0a0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 112215 + timestamp: 1718284365403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + sha256: a5e341cbf797c65d2477b27d99091393edbaa5178c7d69b7463bb105b0488e69 + md5: 7cbfb3a8bb1b78a7f5518654ac6725ad + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 417323 + timestamp: 1718980707330 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmpy2-2.1.5-py312he9d48ea_3.conda + sha256: b92ffcb02ee027db2b3b8b1256ecf9e04afd4c1680467574889419c9ed42c089 + md5: 9defe233dc6909ac868a1ca50b2ca84d + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 201489 + timestamp: 1733462747377 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.68.0-pyhd8ed1ab_0.conda + sha256: efaca61923e45849a3d763280305cb3a00a769546ce5df2b1bbe24db40aa23af + md5: 3b8e056a42f71c9398857ecf0b8fbcb6 + depends: + - protobuf >=3.20.2,<6.0.0.dev0,!=3.20.0,!=3.20.1,!=4.21.1,!=4.21.2,!=4.21.3,!=4.21.4,!=4.21.5 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 67755 + timestamp: 1740136133858 +- conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 + depends: + - python >=3.9 + - typing_extensions + license: MIT + license_family: MIT + size: 51846 + timestamp: 1733327599467 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hf-transfer-0.1.9-py312h5bc9d60_1.conda + sha256: 21acb87a6403f88b2dbdefb79a537bc8fe871b86c60f9b690206eaf7ad1f009c + md5: 3639aa7b1297e680220f52c2b8a21200 + depends: + - python + - __glibc >=2.17,<3.0.a0 + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1339225 + timestamp: 1739803760467 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hf-transfer-0.1.9-py312he5cae2c_1.conda + sha256: 5554caf02aa37f3ef9b35d687f515385a50fd505987f5c4b84433d5c50d6a3b5 + md5: fbb03e07e1aefc42b856f0a06dd999f6 + depends: + - python + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + - openssl >=3.4.1,<4.0a0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1366847 + timestamp: 1739803796587 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hf-transfer-0.1.9-py312hfba41e8_1.conda + sha256: 15b1589c703c6a1677008e422175f540f3da35a9a63c588540a219042c697ea4 + md5: baa81a0f9e0470d67728651af77dc1c1 + depends: + - python + - __osx >=11.0 + - python 3.12.* *_cpython + - openssl >=3.4.1,<4.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1233816 + timestamp: 1739803893697 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- conda: https://conda.anaconda.org/conda-forge/linux-64/httptools-0.6.4-py312h66e93f0_0.conda + sha256: 621e7e050b888e5239d33e37ea72d6419f8367e5babcad38b755586f20264796 + md5: 8b1160b32557290b64d5be68db3d996d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101872 + timestamp: 1732707756745 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/httptools-0.6.4-py312hb2c0f52_0.conda + sha256: 0bd1f30224af142711d11033a7469ae402a1147143f399f7341bbc1d8178c722 + md5: 5e70a6de59352f9a52e9caa7f3447390 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 101255 + timestamp: 1732707891645 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/httptools-0.6.4-py312hea69d52_0.conda + sha256: 5e93cda79e32e8c0039e05ea1939e688da336187dab025f699b42ef529e848be + md5: e1747a8e8d2aca5499aaea9993bf31ff + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 85623 + timestamp: 1732707871414 +- conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- conda: https://conda.anaconda.org/conda-forge/noarch/huggingface_hub-0.29.1-pyhd8ed1ab_0.conda + sha256: f75ca9436fe11d0def6e575d29e0614033c45c90f37895a3b2bb3536612b251c + md5: 0bbbf72b600a1df32666a084769bf240 + depends: + - filelock + - fsspec >=2023.5.0 + - packaging >=20.9 + - python >=3.9 + - pyyaml >=5.1 + - requests + - tqdm >=4.42.1 + - typing-extensions >=3.7.4.3 + - typing_extensions >=3.7.4.3 + license: Apache-2.0 + license_family: APACHE + size: 287974 + timestamp: 1740068383431 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda + sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 + md5: 268203e8b983fddb6412b36f2024e75c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 12282786 + timestamp: 1720853454991 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 28623 + timestamp: 1733223207185 +- conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_1.conda + sha256: 0ec8f4d02053cd03b0f3e63168316530949484f80e16f5e2fb199a1d117a89ca + md5: 6837f3eff7dcea42ecd714ce1ac2b108 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11474 + timestamp: 1733223232820 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b + md5: 1f24853e59c68892452ef94ddd8afd4b + depends: + - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 112327 + timestamp: 1646166857935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.17-hc88f144_0.conda + sha256: 47cf6a4780dc41caa9bc95f020eed485b07010c9ccc85e9ef44b538fedb5341d + md5: b87b1abd2542cf65a00ad2e2461a3083 + depends: + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 287007 + timestamp: 1739161069194 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_4.conda + sha256: 016832a70b0aa97e1c4e47e23c00b0c34def679de25146736df353199f684f0d + md5: 80c9ad5e05e91bb6c0967af3880c9742 + constrains: + - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 699058 + timestamp: 1740155620594 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 + sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 + md5: 1a0ffc65e03ce81559dbcb0695ad1476 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 262096 + timestamp: 1657978241894 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_4.conda + sha256: bb6c5fb3b8de5f90735c5252b57efb3c268ee222c755569dac18065f05147670 + md5: 633b9fe454ffea2aaf29e191d946a83b + depends: + - libgcc >=13 + - libstdcxx >=13 + constrains: + - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1334844 + timestamp: 1736008472455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-19.0.1-hfa2a6e7_0_cpu.conda + sha256: 7b1f61045b37266989023a007d6331875062bb658068a6e6ab49720495ca3543 + md5: 11b712ed1316c98592f6bae7ccfaa86c + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8967810 + timestamp: 1739768880886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-19.0.1-h36213f4_0_cpu.conda + sha256: 3f141e56555676b4a9fd885a0a7452daa2530eb65cfbba1271f7a07457a82003 + md5: cfeb98942a3ef36c0bb2b09b084349da + depends: + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + - arrow-cpp <0.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 8215209 + timestamp: 1739770301694 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-19.0.1-h0945df6_0_cpu.conda + sha256: e34199bea635b1bf9f3819205b291f714ddd47db1bf6e6d10a4eb61da7330214 + md5: 21bcb04df4b1a99721199c5aa6273f53 + depends: + - __osx >=11.0 + - aws-crt-cpp >=0.29.9,<0.29.10.0a0 + - aws-sdk-cpp >=1.11.489,<1.11.490.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libcxx >=18 + - libgoogle-cloud >=2.35.0,<2.36.0a0 + - libgoogle-cloud-storage >=2.35.0,<2.36.0a0 + - libopentelemetry-cpp >=1.18.0,<1.19.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libutf8proc >=2.10.0,<2.11.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5571369 + timestamp: 1739767084108 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-19.0.1-hcb10f89_0_cpu.conda + sha256: 9a3c38a8f1516fe5b7801d0407ff704efd53955ebd63f7fbc439ec3b563d19cc + md5: 0d63e2dea06c44c9d2c8be3e7e38eea9 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 638054 + timestamp: 1739768924910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-acero-19.0.1-h3b568fd_0_cpu.conda + sha256: 3260e26ca9e1146befeb9587ba80610f9d9591365c82f7cd8756f14a9a8e58c2 + md5: 7b270af126ffdec0153d8599370f0430 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 602400 + timestamp: 1739770383854 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-19.0.1-hf07054f_0_cpu.conda + sha256: b15f5fab53d941917143bb1cf22c5a0eacffb8ff2a010ee2e909afab3821d5f9 + md5: 9213d80ffba1921b86bfdf5fdd2c10c4 + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 500147 + timestamp: 1739767179329 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-19.0.1-hcb10f89_0_cpu.conda + sha256: f756208d787db50b6be68210cb9eec3644b8291a8a353bb2071ea4451bfc1412 + md5: ec52b3b990be399f4267a9acabb73070 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libparquet 19.0.1 h081d1f1_0_cpu + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 604500 + timestamp: 1739769034226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-dataset-19.0.1-h3b568fd_0_cpu.conda + sha256: 76327753ed311ae1d1ef3f8f7067888e01d3c69e5198a9108052d74e2f91d03a + md5: 8a025a60dfcfa3d6cf100395f64de8ba + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libparquet 19.0.1 hfc78867_0_cpu + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 581121 + timestamp: 1739770488033 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-19.0.1-hf07054f_0_cpu.conda + sha256: 21fcb9a09e5872b4f1d483d8d950a1804ccb6804881881ca6fe6c5968a5e4dbc + md5: 0695382a64b393765b4bc9e1ee99250c + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libparquet 19.0.1 h636d7b7_0_cpu + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 501234 + timestamp: 1739768239766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-19.0.1-h08228c5_0_cpu.conda + sha256: e0b3ed06ce74c6a083dab59fb3059fdbc40fc71ff94ce470ca0a7c7ffe8d0317 + md5: 792e2359bb93513324326cbe3ee4ebdd + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libarrow-acero 19.0.1 hcb10f89_0_cpu + - libarrow-dataset 19.0.1 hcb10f89_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 523313 + timestamp: 1739769085090 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarrow-substrait-19.0.1-h1e9d426_0_cpu.conda + sha256: c1085eb113a80691e3d76400c91b15dc8c0462d533f8c4ca4c33d5e9fe9cffef + md5: 1e34ad733a8c404ac0f652a942192636 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h36213f4_0_cpu + - libarrow-acero 19.0.1 h3b568fd_0_cpu + - libarrow-dataset 19.0.1 h3b568fd_0_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 516114 + timestamp: 1739770543593 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-19.0.1-h4239455_0_cpu.conda + sha256: 0b5c0839102b396f8b0ba376189562a727ebbed3c6bdab74aaf56227ee45cb73 + md5: 2893dd55f7804b9106126c2f00712ec2 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 19.0.1 h0945df6_0_cpu + - libarrow-acero 19.0.1 hf07054f_0_cpu + - libarrow-dataset 19.0.1 hf07054f_0_cpu + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 450361 + timestamp: 1739768396169 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-31_hfdb39a5_mkl.conda + build_number: 31 + sha256: 862289f2cfb84bb6001d0e3569e908b8c42d66b881bd5b03f730a3924628b978 + md5: bdf4a57254e8248222cb631db4393ff1 + depends: + - mkl >=2024.2.2,<2025.0a0 + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 17259 + timestamp: 1740087718283 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-31_h1a9f1db_openblas.conda + build_number: 31 + sha256: 67c9c81dd0444ecc712124034d9f74186ca82fd770b3df46b1a68564461c6a1a + md5: 48bd5bf15ccf3e409840be9caafc0ad5 + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - mkl <2025 + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16915 + timestamp: 1740087911042 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-31_h10e41b3_openblas.conda + build_number: 31 + sha256: 369586e7688b59b4f92c709b99d847d66d4d095425db327dd32ee5e6ab74697f + md5: 39b053da5e7035c6592102280aa7612a + depends: + - libopenblas >=0.3.29,<0.3.30.0a0 + - libopenblas >=0.3.29,<1.0a0 + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + - mkl <2025 + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17123 + timestamp: 1740088119350 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 + md5: 3ee026955c688f551a9999840cff4c67 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 68982 + timestamp: 1725267774142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 + md5: d0bf1dff146b799b319ea0434b93f779 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 68426 + timestamp: 1725267943211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c + md5: e64d0f3b59c7c4047446b97a8624a72d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 31708 + timestamp: 1725267783442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 + md5: 55e66e68ce55523a6811633dd1ac74e2 + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 28378 + timestamp: 1725267980316 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c + md5: 0e9bd365480c72b25c71a448257b537d + depends: + - libbrotlicommon 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 290230 + timestamp: 1725267792697 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 + md5: 4f3a434504c67b2c42565c0b85c1885c + depends: + - __osx >=11.0 + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 279644 + timestamp: 1725268003553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-31_h372d94f_mkl.conda + build_number: 31 + sha256: 2ee3ab2b6eeb59f2d3c6f933fa0db28f1b56f0bc543ed2c0f6ec04060e4b6ec0 + md5: 2a06a6c16b45bd3d10002927ca204b67 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapack =3.9.0=31*_mkl + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16724 + timestamp: 1740087727554 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-31_hab92f65_openblas.conda + build_number: 31 + sha256: f0457a1d2982f0a28bfbadaa02621677c324e88f7c8198c24fb3e3214c468dba + md5: 6b81dbae56a519f1ec2f25e0ee2f4334 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - liblapack =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16824 + timestamp: 1740087917500 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-31_hb3479ef_openblas.conda + build_number: 31 + sha256: f237486cc9118d09d0f3ff8820280de34365f98ee7b7dc5ab923b04c7cbf25a5 + md5: 7353c2bf0e90834cb70545671996d871 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - blas =2.131=openblas + - liblapack =3.9.0=31*_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17032 + timestamp: 1740088127097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcrc32c-1.1.2-h01db608_0.tar.bz2 + sha256: b8b8c57a87da86b3ea24280fd6aa8efaf92f4e684b606bf2db5d3cb06ffbe2ea + md5: 268ee639c17ada0002fb04dd21816cc2 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 18669 + timestamp: 1633683724891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 + sha256: 58477b67cc719060b5b069ba57161e20ba69b8695d154a719cb4b60caf577929 + md5: 32bd82a6a625ea6ce090a81c3d34edeb + depends: + - libcxx >=11.1.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 18765 + timestamp: 1633683992603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.12.1-h332b0f4_0.conda + sha256: 2ebc3039af29269e4cdb858fca36265e5e400c1125a4bcd84ae73a596e0e76ca + md5: 45e9dc4e7b25e2841deb392be085500e + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: curl + license_family: MIT + size: 426675 + timestamp: 1739512336799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.12.1-h6702fde_0.conda + sha256: a00458a5163b9552897cdac08b273deb1b3add09e05599dfbacf0606c3b1f41f + md5: 14c340cb70867cf7953d2632f89270b5 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: curl + license_family: MIT + size: 444118 + timestamp: 1739512317570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.12.1-h73640d1_0.conda + sha256: 0bddd1791eb0602c8c6aa465802e9d4526d3ec1251d900b209e767753565d5df + md5: 105f0cceef753644912f42e11c1ae9cf + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: curl + license_family: MIT + size: 387893 + timestamp: 1739512564746 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20250104-pl5321h976ea20_0.conda + sha256: c0b27546aa3a23d47919226b3a1635fccdb4f24b94e72e206a751b33f46fd8d6 + md5: fb640d776fc92b682a14e001980825b1 + depends: + - ncurses + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 148125 + timestamp: 1738479808948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 + md5: a9a13cb143bbaa477b1ebaefbe47a302 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 115123 + timestamp: 1702146237623 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libevent-2.1.12-h4ba1bb4_1.conda + sha256: 01333cc7d6e6985dd5700b43660d90e9e58049182017fd24862088ecbe1458e4 + md5: 96ae6083cd1ac9f6bc81631ac835b317 + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 438992 + timestamp: 1685726046519 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda + sha256: 8c136d7586259bb5c0d2b913aaadc5b9737787ae4f40e3ad1beaf96c80b919b7 + md5: 1a109764bff3bdc7bdd84088347d71dc + depends: + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 368167 + timestamp: 1685726248899 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda + sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 + md5: f1b3fab36861b3ce945a13f0dfdfc688 + depends: + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 72345 + timestamp: 1730967203789 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_0.conda + sha256: 41568066beefe7b319ff27d85952242e5b77fb753d705b8716041959e17c35c2 + md5: 966084fccf3ad62a3160666cda869f28 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 51513 + timestamp: 1739260449772 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_2.conda + sha256: a57f7f9ba2a12f56eafdcd25b6d75f7be10b8fc1a802a58b76a77ca8c66f4503 + md5: 6b4268a60b10f29257b51b9b67ff8d76 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==14.2.0=*_2 + - libgomp 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 535507 + timestamp: 1740241069780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_2.conda + sha256: 9647f75cddc18b07eebe6e1f21500eed50a6af2c43c84e831b4c7a597e10d226 + md5: 692c2bb75f32cfafb6799cf6d1c5d0e0 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53622 + timestamp: 1740241074834 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_2.conda + sha256: 996d3c0505301901a7ab23b5e7daad21635d1c065240bb0f4faf7e4f75d7f49d + md5: d8b9d9dc0c8cd97d375b48e55947ba70 + depends: + - libgfortran5 14.2.0 hb6113d0_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53611 + timestamp: 1740241100147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_2.conda + sha256: 7b9e1d3666a00e5a52e5d43c003bd1c73ab472804be513c070aaedca9c4c2a9a + md5: cd754566661513808ef2408c4ab99a2f + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1100765 + timestamp: 1740241083241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_2.conda + sha256: 4e303711fb7413bf98995beac58e731073099d7a669a3b81e49330ca8da05174 + md5: b11c09d9463daf4cae492d29806b1889 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 462783 + timestamp: 1740241005079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.35.0-h2b5623c_0.conda + sha256: d747d14c69da512d8993a995dc2df90e857778b0a8542f12fb751544128af685 + md5: 1040ab07d7af9f23cf2466ffe4e58db1 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258035 + timestamp: 1738662406183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-2.35.0-hccf9d24_0.conda + sha256: b5d323807ea699e76d9ebb829e48100446663978a1aac9adf538249864f73f97 + md5: f22720e07abb547ebce78a3aa7b97d69 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1258015 + timestamp: 1738662706891 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.35.0-hdbe95d5_0.conda + sha256: 9bee9773540956d8a2ca0b317f73d94916200a4bfd8151319bf7fdcbf704d692 + md5: b1ea94282f38b142f8bc842ef7bcc18c + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libcxx >=18 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.35.0 *_0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 877733 + timestamp: 1738662822079 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.35.0-h0121fbd_0.conda + sha256: cb1ef70e55d2c1defbfd8413dbe85b5550782470dda4f8d393f28d41b6d9b007 + md5: 34e2243e0428aac6b3e903ef99b6d57d + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 h2b5623c_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 785777 + timestamp: 1738662565066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgoogle-cloud-storage-2.35.0-hb9b2b65_0.conda + sha256: cf316f07d5dcc3b6669bf6d93203d435133c99d075a9f92dfa28eff1bd4def74 + md5: ae6ab5b7af1409d0eafd2b77c5d5528a + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.35.0 hccf9d24_0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 739471 + timestamp: 1738662862568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.35.0-h7081f7f_0.conda + sha256: 52dc2d18264543b564b59fb80338fbd9cb2296f011d75f41adcd85041795201c + md5: 958beca4e16f59360e30c48ff0351e04 + depends: + - __osx >=11.0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libcxx >=18 + - libgoogle-cloud 2.35.0 hdbe95d5_0 + - libzlib >=1.3.1,<2.0a0 + - openssl + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 529210 + timestamp: 1738664024959 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7792251 + timestamp: 1735584856826 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgrpc-1.67.1-hf7ccdd3_1.conda + sha256: 3fa173dc1d7456aac2b26937daae86a08432a31640e3d6569c62edc661fc9bbe + md5: 8fb41a425bebaeb3d0fa568503612e64 + depends: + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 7430006 + timestamp: 1735585769731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.67.1-h0a426d6_1.conda + sha256: 630edf63981818ff590367cb95fddbed0f5a390464d0952c90ec81de899e84a6 + md5: 8a3cba079d6ac985e7d73c76a678fbb4 + depends: + - __osx >=11.0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 5311706 + timestamp: 1735585137716 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.18-hc99b53d_1.conda + sha256: 3db14977036fe1f511a6dbecacbeff3fdb58482c5c0cf87a2ea3232f5a540836 + md5: 81541d85a45fbf4d0a29346176f1f21c + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + size: 718600 + timestamp: 1740130562607 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-hfe07756_1.conda + sha256: d30780d24bf3a30b4f116fca74dedb4199b34d500fe6c52cced5f8cc1e926f03 + md5: 450e6bdc0c7d986acf7b8443dce87111 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 681804 + timestamp: 1740128227484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 + md5: ed24e702928be089d9ba3f05618515c6 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: aarch64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 647126 + timestamp: 1694475003570 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-31_hc41d3b0_mkl.conda + build_number: 31 + sha256: a2d20845d916ac8fba09376cd791136a9b4547afb2131bc315178adfc87bb4ca + md5: 10d012ddd7cc1c7ff9093d4974a34e53 + depends: + - libblas 3.9.0 31_hfdb39a5_mkl + constrains: + - liblapacke =3.9.0=31*_mkl + - blas =2.131=mkl + - libcblas =3.9.0=31*_mkl + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 16760 + timestamp: 1740087736615 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-31_h411afd4_openblas.conda + build_number: 31 + sha256: 27613828ff6fb258b2e58802617df549f00089660ea8ab6c55c68f042c570162 + md5: 41dbff5eb805a75c120a7b7a1c744dc2 + depends: + - libblas 3.9.0 31_h1a9f1db_openblas + constrains: + - blas =2.131=openblas + - libcblas =3.9.0=31*_openblas + - liblapacke =3.9.0=31*_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16845 + timestamp: 1740087923843 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-31_hc9a63f6_openblas.conda + build_number: 31 + sha256: fe55b9aaf82c6c0192c3d1fcc9b8e884f97492dda9a8de5dae29334b3135fab5 + md5: ff57a55a2cbce171ef5707fb463caf19 + depends: + - libblas 3.9.0 31_h10e41b3_openblas + constrains: + - liblapacke =3.9.0=31*_openblas + - libcblas =3.9.0=31*_openblas + - blas =2.131=openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 17033 + timestamp: 1740088134988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.0.rc1-hb8a341e_0.conda + sha256: efd9d6646cff6e93a81a9b671fa7af683f843ad72d1a46e258720d2a639f1034 + md5: cf83972da6924c67d8fbffa222896b95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42975121 + timestamp: 1738551437179 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm20-20.1.0.rc1-h1ddd4b9_0.conda + sha256: 7a06b4f6656f26e0b5ff124701973fa8602f5062f211d3975f40d5239d3eb4d9 + md5: a7649551ec41c69f5361a6c596ed1ffd + depends: + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 42134035 + timestamp: 1738491036719 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.4-h86ecc28_0.conda + sha256: 96413664f0fade54a4931940d18749cfc8e6308349dbb0cb83adb2394ca1f730 + md5: b88244e0a115cc34f7fbca9b11248e76 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124197 + timestamp: 1738528201520 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d + depends: + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 + depends: + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.29-pthreads_h9d3fd7e_0.conda + sha256: 3a2ccf4c9098cd18a636e9b7fff947fdeb4962bcfb75c9d6fd80b8c50caf6a3c + md5: a99e2bfcb1ad6362544c71281eb617e9 + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4801657 + timestamp: 1739825308974 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.29-openmp_hf332438_0.conda + sha256: 8989d9e01ec8c9b2d48dbb5efbe70b356fcd15990fb53b64fcb84798982c0343 + md5: 0cd1148c68f09027ee0b0f0179f77c30 + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.29,<0.3.30.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4168442 + timestamp: 1739825514918 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.18.0-hfcad708_1.conda + sha256: 4ea235e08676f16b0d3c3380befe1478c0fa0141512ee709b011005c55c9619f + md5: 1f5a5d66e77a39dc5bd639ec953705cf + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 ha770c72_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 801927 + timestamp: 1735643375271 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-1.18.0-h60b47f9_1.conda + sha256: 160c493cd0f897955b0b6035b51c6d7255ffbaed3c8a12d43e8e8a719d405aba + md5: afe3c8c53f4b6d27d553c230d4b34038 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 h8af1aa0_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 800896 + timestamp: 1735643533825 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.18.0-h0c05b2d_1.conda + sha256: c6bcbd53d62a9e0d8c667e560db0ca2ecb7679277cbb3c23457aabe74fcb8cba + md5: 19c46cc18825f3924251c39ec1b0d983 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgrpc >=1.67.1,<1.68.0a0 + - libopentelemetry-cpp-headers 1.18.0 hce30654_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - nlohmann_json + - prometheus-cpp >=1.3.0,<1.4.0a0 + constrains: + - cpp-opentelemetry-sdk =1.18.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 529588 + timestamp: 1735643889612 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.18.0-ha770c72_1.conda + sha256: aa1f7dea79ea8513ff77339ba7c6e9cf10dfa537143e7718b1cfb3af52b649f2 + md5: 4fb055f57404920a43b147031471e03b + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 320359 + timestamp: 1735643346175 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopentelemetry-cpp-headers-1.18.0-h8af1aa0_1.conda + sha256: 981c0b29a0789597fa8ed147b02df2d2ad0c7f863d87df74770c40cee1800228 + md5: 282193b19a19e3b5d75d18ef82713ef0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 319401 + timestamp: 1735643509251 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.18.0-hce30654_1.conda + sha256: 82e5f5ba64debbaab3c601b265dfc0cdb4d2880feba9bada5fd2e67b9f91ada5 + md5: e965dad955841507549fdacd8f7f94c0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 320565 + timestamp: 1735643673319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-19.0.1-h081d1f1_0_cpu.conda + sha256: e9c4a07e79886963bfcd05894a15b5d4c7137c1122273de68845315c35d6505d + md5: 8b58c378d65b213c001f04a174a2a70e + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1 hfa2a6e7_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1244749 + timestamp: 1739769006551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libparquet-19.0.1-hfc78867_0_cpu.conda + sha256: 4822fcb00e97644ce74f313cd2f44fe85085c64b1481ac7e1a22ee7dd2ef772a + md5: d19e95e75e9005e712ec81409868b880 + depends: + - libarrow 19.0.1 h36213f4_0_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 1154758 + timestamp: 1739770461892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-19.0.1-h636d7b7_0_cpu.conda + sha256: 54e4a18493d63b7fbd5cf39fadabe665bcf462121a7bc2f394f510b0bcf22031 + md5: 0cce19e6981849babe6c73797abbfa4e + depends: + - __osx >=11.0 + - libarrow 19.0.1 h0945df6_0_cpu + - libcxx >=18 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.1,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 895659 + timestamp: 1739768176454 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.47-hec79eb8_0.conda + sha256: 3861a65106a5f876eff3fc19042c3edb528216114b9f8e64b37aebf003deda11 + md5: c4b1ba0d7cef5002759d2f156722feee + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: zlib-acknowledgement + size: 291536 + timestamp: 1739957375872 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.3-h44a3b7b_1.conda + sha256: ecb69f2b1668e784b41ba667493be846662d5ef702bef64fb2e013bb1364cdc4 + md5: 68f807f7cc13951652bbe048253fd405 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2788074 + timestamp: 1735576315676 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 209793 + timestamp: 1735541054068 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libre2-11-2024.07.02-h18dbdb1_2.conda + sha256: 862c20de0120f802e618dcb25913d00c5b82f91f4be60b2d46a774e851adc2f6 + md5: 9a7dbbaab49f76a6f36e5c9d98e323a7 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 204305 + timestamp: 1735540986919 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2024.07.02-h07bc746_2.conda + sha256: 112a73ad483353751d4c5d63648c69a4d6fcebf5e1b698a860a3f5124fc3db96 + md5: 6b1e3624d3488016ca4f1ca0c412efaa + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + constrains: + - re2 2024.07.02.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 167155 + timestamp: 1735541067807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsentencepiece-0.2.0-h6164ad9_10.conda + sha256: 57074803772f65d4075b7d6dc17ff5aa40ec3a30109fa4225ca16911504c4a8b + md5: a7a192edc9cfba26a27df3283203e6a1 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 800865 + timestamp: 1735627982895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: ISC + size: 177394 + timestamp: 1716828514515 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.49.1-h5eb1b54_1.conda + sha256: 920fb3b7d3b873babf79a3e392cc82d43b8bd02a573ccaff34219efb5cf7b51e + md5: 150d64241fa27d9d35a7f421ca968a6c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: Unlicense + size: 915118 + timestamp: 1739953101699 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda + sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 + md5: ddc7194676c285513706e5fc64f214d7 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 279028 + timestamp: 1732349599461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_2.conda + sha256: c30a74bc996013907f6d9f344da007c26d98ef9a0831151cd50aece3125c45d5 + md5: eadee2cda99697e29411c1013c187b92 + depends: + - libgcc 14.2.0 he277a41_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3810779 + timestamp: 1740241094774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_2.conda + sha256: 0107886ead6f255956d8e520f8dff260f9ab3d0d51512f18c52710c406e4b2df + md5: c934c1fddad582fcc385b608eb06a70c + depends: + - libstdcxx 14.2.0 h3f4de04_2 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53715 + timestamp: 1740241126343 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libthrift-0.21.0-h154c74f_0.conda + sha256: f04ab1417aca1687edff9c30d8423ace285eb8c053dc16d595c6e47cfeefb274 + md5: c28792bf37f4ecdce8e3cb9e40750650 + depends: + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 417329 + timestamp: 1727205944238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.21.0-h64651cc_0.conda + sha256: 7a6c7d5f58cbbc2ccd6493b4b821639fdb0701b9b04c737a949e8cb6adf1c9ad + md5: 7ce2bd2f650f8c31ad7ba4c7bfea61b7 + depends: + - __osx >=11.0 + - libcxx >=17 + - libevent >=2.1.12,<2.1.13.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 324342 + timestamp: 1727206096912 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 + depends: + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.5.1-cpu_mkl_h89e7157_113.conda + sha256: 70e24c9b98d24006ce3c2b27503cb2c122f78cc6f59e980db774020203835aca + md5: 0dfe6af4a27ec2372271e3703cc52e48 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_mkl_*_113 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 53568815 + timestamp: 1739239230425 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtorch-2.5.1-cpu_generic_hb04e7f6_13.conda + sha256: 62f94d17e75cdf2f48f4a89175759449aaad05bf2a356836430c82c65a7c5f44 + md5: ad17071bfd97d24a7a83fd044ae6282c + depends: + - _openmp_mutex >=4.5 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-cpu ==2.5.1 + - pytorch 2.5.1 cpu_generic_*_13 + - openblas * openmp_* + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 37722765 + timestamp: 1739239246382 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtorch-2.5.1-cpu_generic_he9b55c7_13.conda + sha256: 320cca1b7dbe0506221e0fb2911838fd112d4440a5298f033b56c1a93f0cf6fa + md5: e24814d808f0cd0e130dc141af1a8efd + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - numpy >=1.19,<3 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - sleef >=3.8,<4.0a0 + constrains: + - pytorch-gpu ==99999999 + - pytorch 2.5.1 cpu_generic_*_13 + - pytorch-cpu ==2.5.1 + - openblas * openmp_* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 28302663 + timestamp: 1739247703257 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.10.0-h4c51ac1_0.conda + sha256: 8e41563ee963bf8ded06da45f4e70bf42f913cb3c2e79364eb3218deffa3cd74 + md5: aeccfff2806ae38430638ffbb4be9610 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 82745 + timestamp: 1737244366901 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libutf8proc-2.10.0-ha346350_0.conda + sha256: 9c333e07b76ae1ea2c882db764be52dc82f632be66d993a50b35ca9c5475074a + md5: c5166bcfb8348e8fc31ee16ec3981a5e + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 82679 + timestamp: 1737329054400 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.10.0-hda25de7_0.conda + sha256: aca3ef31d3dff5cefd3790742a5ee6548f1cf0201d0e8cee08b01da503484eb6 + md5: 5f741aed1d8d393586a5fdcaaa87f45c + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 83628 + timestamp: 1737244450097 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f + md5: 000e30b09db0b7c775b21695dff30969 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35720 + timestamp: 1680113474501 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.50.0-hb9d3cd8_0.conda + sha256: b4a8890023902aef9f1f33e3e35603ad9c2f16c21fdb58e968fa6c1bd3e94c0b + md5: 771ee65e13bc599b0b62af5359d80169 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 891272 + timestamp: 1737016632446 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.50.0-h86ecc28_0.conda + sha256: 67914c7f171d343059144d804c2f17fcd621a94e45f179a0fd843b8c1618823e + md5: 915db044076cbbdffb425170deb4ce38 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 621056 + timestamp: 1737016626950 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.50.0-h5505292_0.conda + sha256: d13fb49d4c8262bf2c44ffb2c77bb2b5d0f85fc6de76bdb75208efeccb29fce6 + md5: 20717343fb30798ab7c23c2e92b748c1 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 418890 + timestamp: 1737016751326 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b + depends: + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b + md5: cd14ee5cca2464a425b1dbfc24d90db2 + depends: + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 397493 + timestamp: 1727280745441 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.6-h2e0c361_0.conda + sha256: bb075df08b04b1b47e75a250f2ebbb2401c3367057d64b8d44ef1ef3f44480e1 + md5: a159a92f890f862408c951c08f13415f + depends: + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 733707 + timestamp: 1739953178456 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.6-hce475f1_0.conda + sha256: 9ce429417545f7616ed528061305b3a1fc3732ff3bb24bd91cba260550879693 + md5: 8654012bd68aa48b94eee6c9faab85b6 + depends: + - __osx >=11.0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 582490 + timestamp: 1739953065675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 + md5: 08aad7cbe9f5a6b460d0976076b6ae64 + depends: + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 66657 + timestamp: 1727963199518 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-19.1.7-h024ca30_0.conda + sha256: 5383e32604e03814b6011fa01a5332057934181a7ea0e90abba7890c17cabce6 + md5: 9915f85a72472011550550623cce2d53 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3190529 + timestamp: 1736986301022 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.7-hdb05f8b_0.conda + sha256: b92a669f2059874ebdcb69041b6c243d68ffc3fb356ac1339cec44aeb27245d7 + md5: c4d54bfd3817313ce758aa76283b118d + depends: + - __osx >=11.0 + constrains: + - openmp 19.1.7|19.1.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 280830 + timestamp: 1736986295869 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.10.0-h5ad3122_1.conda + sha256: 67e55058d275beea76c1882399640c37b5be8be4eb39354c94b610928e9a0573 + md5: 6654e411da94011e8fbe004eacb8fe11 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 184953 + timestamp: 1733740984533 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda + sha256: 94d3e2a485dab8bdfdd4837880bde3dd0d701e2b97d6134b8806b7c8e69c8652 + md5: 01511afc6cc1909c5303cf31be17b44f + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 148824 + timestamp: 1733741047892 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-3.0.0-pyhd8ed1ab_1.conda + sha256: 0fbacdfb31e55964152b24d5567e9a9996e1e7902fb08eb7d91b5fd6ce60803a + md5: fee3164ac23dfca50cfcc8b85ddefb81 + depends: + - mdurl >=0.1,<1 + - python >=3.9 + license: MIT + license_family: MIT + size: 64430 + timestamp: 1733250550053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_1.conda + sha256: 1d500158262f30b9c23e37d1c861fe76e127a3926d69b3b38c25d20d3faa6f9f + md5: bc8607ab678073a0441808a31465f4fb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 25079 + timestamp: 1733220639175 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.2.0.dev2025022805-release.conda + sha256: 2c06fc3f0a5ff31b90531e477e1bc8edcbf530a05146c9afb148819b3115d4a6 + md5: 654fe24f42ae167dd46e5858b512fd64 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 252165614 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/max-pipelines-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 3d909e8fd23a5e058ab59ad760423a0ecd55f51ac474a282cd00f698dd958c33 + md5: f511490d5e1d505c3df07f17c3b6d1e6 + depends: + - max-python ==25.2.0.dev2025022805 release + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 10380 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c741ded7e064aba732999cf95e43dda28e6e9cdc59a20254fe32b8bc49739ea6 + md5: ae9b9de4204cb583f9feeb3369809182 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 125985562 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda + sha256: 78c1bbe1723449c52b7a9df1af2ee5f005209f67e40b6e1d3c7619127c43b1c7 + md5: 592132998493b3ff25fd7479396e8351 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14465 + timestamp: 1733255681319 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2024.2.2-ha957f24_16.conda + sha256: 77906b0acead8f86b489da46f53916e624897338770dbf70b04b8f673c9273c1 + md5: 1459379c79dda834673426504d52b319 + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=19.1.2 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-IntelSimplifiedSoftwareOct2022 + license_family: Proprietary + size: 124718448 + timestamp: 1730231808335 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpc-1.3.1-h783934e_1.conda + sha256: b5b674f496ed28c0b2d08533c6f11eaf1840bf7d9c830655f51514f2f9d9a9c8 + md5: d3758cd24507dc1bda3483ce051d48ac + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: aarch64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 132799 + timestamp: 1725629168783 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mpfr-4.2.1-h2305555_3.conda + sha256: abb35c37de2ec6c9ee89995142b1cfea9e6547202ba5578e5307834eca6d436f + md5: 65b21e8d5f0ec6a2f7e87630caed3318 + depends: + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 1841314 + timestamp: 1725746723157 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_2.conda + sha256: b05bc8252a6e957bf4a776ed5e0e61d1ba88cdc46ccb55890c72cc58b10371f4 + md5: 5b5e3267d915a107eca793d52e1b780a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 61507 + timestamp: 1733913288935 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_2.conda + sha256: ff9f767ba4df68e9ac2a380529a83a2fb6abd985beee9eab16608f7e2c3ccc6e + md5: dcf3ae213cf0ab40ebcc10452e1ed9fa + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 63077 + timestamp: 1733913233032 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 + md5: 0048335516fed938e4dd2c457b4c5b9b + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 55968 + timestamp: 1729065664275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multiprocess-0.70.15-py312h98912ed_1.conda + sha256: bb612a921fafda6375a2204ffebd8811db8dd3b8f25ac9886cc9bcbff7e3664e + md5: 5a64b9f44790d9a187a85366dd0ffa8d + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 335666 + timestamp: 1695459025249 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multiprocess-0.70.15-py312hdd3e373_1.conda + sha256: c53362cdf346f314e111faddc53061e3fd2ece0ba68ca303f5dd109976df158f + md5: 173a1692d2b3ddc265dc6afd21a869b3 + depends: + - dill >=0.3.6 + - libgcc-ng >=12 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 336110 + timestamp: 1695459137796 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multiprocess-0.70.15-py312h02f2b3b_1.conda + sha256: 8041371e3ec3fbc2ca13c71b0180672896e6382e62892d9f6b11a4c5dd675951 + md5: 910ef2223c71902175418d9163152788 + depends: + - dill >=0.3.6 + - python >=3.12.0rc3,<3.13.0a0 + - python >=3.12.0rc3,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 335147 + timestamp: 1695459275360 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: X11 AND BSD-3-Clause + size: 926034 + timestamp: 1738196018799 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 + md5: f2bd10ff23ab5c87327439c4499b3f3e + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 122755 + timestamp: 1723652622631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 + sha256: d38542a151a90417065c1a234866f97fd1ea82a81de75ecb725955ab78f88b4b + md5: 9a66894dfd07c4510beb6b3f9672ccc0 + constrains: + - mkl <0.a0 + license: BSD-3-Clause + license_family: BSD + size: 3843 + timestamp: 1582593857545 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.26.4-py312h470d778_0.conda + sha256: 23767677a7790bee5457d5e75ebd508b9a31c5354216f4310dd1acfca3f7a6f9 + md5: 9cebf5a06cb87d4569cd68df887af476 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6614296 + timestamp: 1707225994762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvidia-ml-py-12.570.86-pyhd8ed1ab_0.conda + sha256: 6fd70c3d5b509ef1c30cb13df877f14b04bb0e53da032950921b31d95aa5971d + md5: bc4b4177052f661da6d56838dfe57a52 + depends: + - python >=3.9 + constrains: + - nvidia-ml ==9999999999 + - pynvml ~=12.0 + license: BSD-3-Clause + license_family: BSD + size: 43543 + timestamp: 1737778765664 +- conda: https://conda.anaconda.org/conda-forge/noarch/nvitop-1.4.2-pyh707e725_0.conda + sha256: 002c17241c698ba07b0d610da0590e8c8c1e38aef13cf7bd03112b2a9ff5350d + md5: eceb58298054d6f2b7c8f8c53642c2d8 + depends: + - __unix + - nvidia-ml-py >=11.450.51,<12.571.0a0 + - psutil >=5.6.6 + - python >=3.9 + license: GPL-3.0-only + license_family: GPL + size: 143819 + timestamp: 1737914833293 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 + depends: + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.1-hd08dc88_0.conda + sha256: d80b52b56b2206053968270069616868cbeb289ef855cf1584b1bb0fef61b37c + md5: 09036190605c57eaecf01218e0e9542d + depends: + - ca-certificates + - libgcc >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 3476570 + timestamp: 1739303256089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-api-1.30.0-pyhd8ed1ab_0.conda + sha256: ab5b873cc2542e305236e0439d323bf880d1b49eafe7a8a04d6863a5a409059d + md5: 65caf9f399f67c1c16efc0fb76f3576c + depends: + - deprecated >=1.2.6 + - importlib-metadata <=8.5.0,>=6.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 44649 + timestamp: 1738813183426 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-common-1.30.0-pyhd8ed1ab_0.conda + sha256: 12294c0e75460bf773500d0b97d58701f6141a26ebc7507b7aefd045c3943801 + md5: 49cf930ab95d2abaabb17f0d40899628 + depends: + - backoff >=1.10.0,<3.0.0 + - opentelemetry-proto 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 19155 + timestamp: 1738757443981 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-otlp-proto-http-1.30.0-pyhd8ed1ab_0.conda + sha256: 4bdb101663f63cd9b9c5560b40cc4441fd766885a13a130c9a0b60addc493f7d + md5: 19cd3caf8abaabe7210cb46dbde1932b + depends: + - deprecated >=1.2.6 + - googleapis-common-protos ~=1.52 + - opentelemetry-api ~=1.15 + - opentelemetry-exporter-otlp-proto-common 1.30.0 + - opentelemetry-proto 1.30.0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - python >=3.9 + - requests ~=2.7 + license: Apache-2.0 + license_family: APACHE + size: 17129 + timestamp: 1738881064907 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-exporter-prometheus-0.51b0-pyh29332c3_0.conda + sha256: 1b7420798c2e8589ea9c03a0b9e1db64a79dfbdf6d12937ad69fd70f9b2a6ec7 + md5: cbfa34f2b05a9f916b4e255416103082 + depends: + - python >=3.9 + - opentelemetry-api >=1.12,<2.dev0 + - opentelemetry-sdk >=1.30.0,<1.31.dev0 + - prometheus_client >=0.5.0,<1.0.0 + - python + license: Apache-2.0 + license_family: APACHE + size: 22659 + timestamp: 1740444975350 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-proto-1.30.0-pyhd8ed1ab_0.conda + sha256: a7dfb1566daca6bd7aea78ccc69257324336fa945199081c9a9d378d1b59737b + md5: 6b2133dbe9127cd09d3c20061c8f4faa + depends: + - protobuf <6.0,>=5.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 37366 + timestamp: 1738753488553 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-sdk-1.30.0-pyhd8ed1ab_0.conda + sha256: 287fac5c7a0a0a565932b7a43b733036bbc08e2b11cd93fb64f29ededb89e9c6 + md5: 3667728a1b18fb9a32aef23036934d9f + depends: + - opentelemetry-api 1.30.0 + - opentelemetry-semantic-conventions 0.51b0 + - python >=3.9 + - typing-extensions >=3.7.4 + - typing_extensions >=3.7.4 + license: Apache-2.0 + license_family: APACHE + size: 77853 + timestamp: 1738855492720 +- conda: https://conda.anaconda.org/conda-forge/noarch/opentelemetry-semantic-conventions-0.51b0-pyh3cfb1c2_0.conda + sha256: 2618877c066a6608ea57a05d260ddd805d0f59b95076f63d816df139f648f25a + md5: ff41e8547f2e7e0d0affc6c6e6e0e87f + depends: + - deprecated >=1.2.6 + - opentelemetry-api 1.30.0 + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 91903 + timestamp: 1738850427906 +- conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1188881 + timestamp: 1735630209320 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/orc-2.0.3-hdd485aa_2.conda + sha256: b6c67542352a86cdf143c3066d5cda855b74454a156eedcd8958b494c6a32a83 + md5: d19f01b42e5d6a2908b65df435aff42f + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1167714 + timestamp: 1735630248837 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.0.3-h0ff2369_2.conda + sha256: cca330695f3bdb8c0e46350c29cd4af3345865544e36f1d7c9ba9190ad22f5f4 + md5: 24b1897c0d24afbb70704ba998793b78 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 438520 + timestamp: 1735630624140 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pandas-2.2.3-py312ha2895bd_2.conda + sha256: a34b10077de97eea72c81cb96e3ddc7d48320c0fc7d9b28ba8d9d2bead1d8297 + md5: 39a91ac336d350513de6aad56da5a920 + depends: + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + constrains: + - fsspec >=2022.11.0 + - s3fs >=2022.11.0 + - fastparquet >=2022.12.0 + - pyreadstat >=1.2.0 + - qtpy >=2.3.0 + - scipy >=1.10.0 + - beautifulsoup4 >=4.11.2 + - gcsfs >=2022.11.0 + - numexpr >=2.8.4 + - sqlalchemy >=2.0.0 + - pyxlsb >=1.0.10 + - numba >=0.56.4 + - lxml >=4.9.2 + - matplotlib >=3.6.3 + - psycopg2 >=2.9.6 + - tzdata >=2022.7 + - bottleneck >=1.3.6 + - xarray >=2022.12.0 + - xlsxwriter >=3.0.5 + - zstandard >=0.19.0 + - blosc >=1.21.3 + - pytables >=3.8.0 + - openpyxl >=3.1.0 + - pyqt5 >=5.15.8 + - tabulate >=0.9.0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 15162992 + timestamp: 1736811533875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.2.3-py312hcd31e36_1.conda + sha256: ff0cb54b5d058c7987b4a0984066e893642d1865a7bb695294b6172e2fcdc457 + md5: c68bfa69e6086c381c74e16fd72613a8 + depends: + - __osx >=11.0 + - libcxx >=17 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14470437 + timestamp: 1726878887799 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.1.0-py312h719f0cf_0.conda + sha256: 7559556ffc44bda777f85c2e5acd6b5756fa5822c0271b329b7b9a3c6bb20349 + md5: 77e0ec0a6fc847d317f204aa15b59f6b + depends: + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux + license: HPND + size: 41362848 + timestamp: 1735932311857 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_1.conda + sha256: 122433fc5318816b8c69283aaf267c73d87aa2d09ce39f64c9805c9a3b264819 + md5: e9dcbce5f45f9ee500e728ae58b605b6 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 23595 + timestamp: 1733222855563 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus-async-22.2.0-pyh29332c3_0.conda + sha256: 28262575a4b0421a50983be5e898205b7315b50d3e72518fe44b2b9c368026d8 + md5: e86915350744e5a8de993f7474ca98ce + depends: + - python >=3.9 + - prometheus_client >=0.8.0 + - typing_extensions >=3.10.0 + - wrapt + - python + license: Apache-2.0 + license_family: APACHE + size: 24093 + timestamp: 1737857634308 +- conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda + sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc + md5: a83f6a2fdc079e643237887a37460668 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 199544 + timestamp: 1730769112346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/prometheus-cpp-1.3.0-h7938499_0.conda + sha256: 9350d7bbc3982a732ff13a7fd17b585509e3b7d0191ac7b810cc3224868e3648 + md5: 10f4301290e51c49979ff98d1bdf2556 + depends: + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 211335 + timestamp: 1730769181127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda + sha256: 851a77ae1a8e90db9b9f3c4466abea7afb52713c3d98ceb0d37ba6ff27df2eff + md5: 7172339b49c94275ba42fec3eaeda34f + depends: + - __osx >=11.0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - zlib + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 173220 + timestamp: 1730769371051 +- conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 49002 + timestamp: 1733327434163 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py312h178313f_1.conda + sha256: 6d5ff6490c53e14591b70924711fe7bd70eb7fbeeeb1cbd9ed2f6d794ec8c4eb + md5: 349635694b4df27336bc15a49e9220e9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52947 + timestamp: 1737635699390 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py312hcc812fe_1.conda + sha256: d759d8ab9c060b42cabf6312b9a04aa590daecabf1dd4e35731f4bc1b5c388bb + md5: 533b07e9fd835938f465225613825eee + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 52776 + timestamp: 1737635802135 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py312h998013c_1.conda + sha256: 96145760baad111d7ae4213ea8f8cc035cf33b001f5ff37d92268e4d28b0941d + md5: 83678928c58c9ae76778a435b6c7a94a + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 50942 + timestamp: 1737635896600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-5.28.3-py312h2ec8cdc_0.conda + sha256: acb2e0ee948e3941f8ed191cb77f654e06538638aed8ccd71cbc78a15242ebbb + md5: 9d7e427d159c1b2d516cc047ff177c48 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 464794 + timestamp: 1731366525051 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/protobuf-5.28.3-py312h6f74592_0.conda + sha256: 9c575d5035c7ecb114ab9e17906c0a54087d9598dd6a2104c02fe33f0a29dd46 + md5: 06513608c94fb1c1b17136ace77063a9 + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 473242 + timestamp: 1731366577844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-5.28.3-py312hd8f9ff3_0.conda + sha256: 9d572a97419bdace14d7c7cc8cc8c4bf2dcb22b56965dac87a27fbdb5061b926 + md5: 5afbe52a59f04dd1fe566d0d17590d7e + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libprotobuf 5.28.3 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 448803 + timestamp: 1731367010746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.0.0-py312h66e93f0_0.conda + sha256: 158047d7a80e588c846437566d0df64cec5b0284c7184ceb4f3c540271406888 + md5: 8e30db4239508a538e4a3b3cdf5b9616 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 466219 + timestamp: 1740663246825 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/psutil-7.0.0-py312hb2c0f52_0.conda + sha256: 2a4f1ad69b16b9843f90adf5b39418c635835605bd2b300f55a8432c5ee22296 + md5: 1195731cd361196f9e352341a764fccb + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 467245 + timestamp: 1740663309651 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.0.0-py312hea69d52_0.conda + sha256: cb11dcb39b2035ef42c3df89b5a288744b5dcb5a98fb47385760843b1d4df046 + md5: 0f461bd37cb428dc20213a08766bb25d + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 476376 + timestamp: 1740663381256 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba + md5: bb5a90c93e3bac3d5690acf76b4a6386 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 8342 + timestamp: 1726803319942 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-19.0.1-py312h7900ff3_0.conda + sha256: 82a0b6ef00473c134ff32138a6fe1f6edc600f362f2007d33d6c6723e220a83d + md5: 972f2a7f04b117accc08a11469c2cb6e + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25300 + timestamp: 1739792645286 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-19.0.1-py312h8025657_0.conda + sha256: d17f85be9e3c9ccdbf46a00f51a155d6c9d02837f3ff850539cc931ce149546f + md5: 0f2b788d71caa13c9e05fb4366e3b564 + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 25487 + timestamp: 1739792927040 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-19.0.1-py312h1f38498_0.conda + sha256: 212a9ef1971d69882b977a930b3e8cd9d78bb58c027119a52b92d48a5e47f9eb + md5: 4bbcfad0bfcad7ee1d617a9b6db564ee + depends: + - libarrow-acero 19.0.1.* + - libarrow-dataset 19.0.1.* + - libarrow-substrait 19.0.1.* + - libparquet 19.0.1.* + - pyarrow-core 19.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 25462 + timestamp: 1739792876991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-19.0.1-py312h01725c0_0_cpu.conda + sha256: b2d397ee72a8e33aa1b2bcaa525b3bfc1dad333a631e668e54bcdcf275b3d69b + md5: 227543d1eef90da786f0c63bd0787839 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5203933 + timestamp: 1739792285799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyarrow-core-19.0.1-py312h66f7834_0_cpu.conda + sha256: ab25433629022236b24d35a53dbef033ef60f3cb3a71fa630392d7340791bdc7 + md5: e83aadc9635bdcf69845587c4c837fd3 + depends: + - libarrow 19.0.1.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 5017444 + timestamp: 1739792893195 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-19.0.1-py312hc40f475_0_cpu.conda + sha256: 50ad4d67a1a2be32c2441a945a333b5347e36f027ea629fd903e7eaae77e0ed7 + md5: 90e3c0898e229d76e4a6949f621f0f58 + depends: + - __osx >=11.0 + - libarrow 19.0.1.* *cpu + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - apache-arrow-proc =*=cpu + - numpy >=1.21,<3 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 4398733 + timestamp: 1739792829575 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda + sha256: 27f888492af3d5ab19553f263b0015bf3766a334668b5b3a79c7dc0416e603c1 + md5: 8088a5e7b2888c780738c3130f2a969d + depends: + - pybind11-global 2.13.6 *_2 + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 186375 + timestamp: 1730237816231 +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda + sha256: 9ff0d61d86878f81779bdb7e47656a75feaab539893462cff29b8ec353026d81 + md5: 120541563e520d12d8e39abd7de9092c + depends: + - __unix + - python + constrains: + - pybind11-abi ==4 + license: BSD-3-Clause + license_family: BSD + size: 179139 + timestamp: 1730237481227 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.10.6-pyh3cfb1c2_0.conda + sha256: 9a78801a28959edeb945e8270a4e666577b52fac0cf4e35f88cf122f73d83e75 + md5: c69f87041cf24dfc8cb6bf64ca7133c7 + depends: + - annotated-types >=0.6.0 + - pydantic-core 2.27.2 + - python >=3.9 + - typing-extensions >=4.6.1 + - typing_extensions >=4.12.2 + license: MIT + license_family: MIT + size: 296841 + timestamp: 1737761472006 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.27.2-py312h12e396e_0.conda + sha256: 81602a4592ad2ac1a1cb57372fd25214e63b1c477d5818b0c21cde0f1f85c001 + md5: bae01b2563030c085f5158c518b84e86 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1641402 + timestamp: 1734571789895 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pydantic-core-2.27.2-py312h8cbf658_0.conda + sha256: 623e0f3846f15d035ce7ab7ae445fc8d9e547b6684ab55858b6f44510d24b097 + md5: 9677f6ab4bf27ba3c2aee70d08c7b27c + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 1505076 + timestamp: 1734571966615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.27.2-py312hcd83bfe_0.conda + sha256: cfa7201f890d5d08ce29ff70e65a96787d5793a1718776733666b44bbd4a1205 + md5: dcb307e02f17d38c6e1cbfbf8c602852 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.6.0,!=4.7.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1593461 + timestamp: 1734571986644 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-settings-2.8.1-pyh3cfb1c2_0.conda + sha256: 84b78dcdc75d7dacd8c85df9a7fef42ff5684897217b46beef6c516afb2550dc + md5: 88715188749bfac9fa92aec9c747d62c + depends: + - pydantic >=2.7.0 + - python >=3.9 + - python-dotenv >=0.21.0 + license: MIT + size: 32632 + timestamp: 1740672054181 +- conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.1-pyhd8ed1ab_0.conda + sha256: 28a3e3161390a9d23bc02b4419448f8d27679d9e2c250e29849e37749c8de86b + md5: 232fb4577b6687b2d503ef8e254270c9 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 888600 + timestamp: 1736243563082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyinstrument-5.0.1-py312h66e93f0_0.conda + sha256: 3f1c0bc95f2c46dcd107f44cf742ee1fa40ba22e244f01083654743bbbcf28f3 + md5: 9f1d7b421e4c8fd00009490613db64d4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 182333 + timestamp: 1737774425235 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyinstrument-5.0.1-py312hb2c0f52_0.conda + sha256: 16af5db4359078bcb526291855bf1075ab035a96fe4e8d5cc4b0b5c8cba89b9a + md5: 90f5e9e04b1ecf25ad3f28b606f63742 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 183988 + timestamp: 1737774588265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyinstrument-5.0.1-py312hea69d52_0.conda + sha256: 5e7de2f908af22bbd8cf3562ce5ebf65ad6c0d8e40038f90b56f4db750639ce2 + md5: 07b0eb9b6bd91dfa87f95032825690dc + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 182524 + timestamp: 1737774624030 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.4-pyhd8ed1ab_1.conda + sha256: 75245ca9d0cbd6d38bb45ec02430189a9d4c21c055c5259739d738a2298d61b3 + md5: 799ed216dc6af62520f32aa39bc1c2bb + depends: + - colorama + - exceptiongroup >=1.0.0rc8 + - iniconfig + - packaging + - pluggy <2,>=1.5 + - python >=3.9 + - tomli >=1 + constrains: + - pytest-faulthandler >=2 + license: MIT + license_family: MIT + size: 259195 + timestamp: 1733217599806 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.9-h1683364_0_cpython.conda + sha256: 0366f38918bceda8ff5917d7bbe1cea2bc8b6c74e7245eb0e4b0d3c2d37f76cf + md5: 2e7ad70254455e0508adabff10218512 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + size: 13804161 + timestamp: 1739519531794 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.0.1-pyhd8ed1ab_1.conda + sha256: 99713f6b534fef94995c6c16fd21d59f3548784e9111775d692bdc7c44678f02 + md5: e5c6ed218664802d305e79cc2d4491de + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 24215 + timestamp: 1733243277223 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-multipart-0.0.20-pyhff2d567_0.conda + sha256: 1b03678d145b1675b757cba165a0d9803885807792f7eb4495e48a38858c3cca + md5: a28c984e0429aff3ab7386f7de56de6f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 27913 + timestamp: 1734420869885 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.1-pyhd8ed1ab_0.conda + sha256: 1597d6055d34e709ab8915091973552a0b8764c8032ede07c4e99670da029629 + md5: 392c91c42edd569a7ec99ed8648f597a + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 143794 + timestamp: 1737541204030 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-xxhash-3.5.0-py312h66e93f0_2.conda + sha256: b5950a737d200e2e3cf199ab7b474ac194fcf4d6bee13bcbdf32c5a5cca7eaf0 + md5: cc3f6c452697c1cf7e4e6e5f21861f96 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23216 + timestamp: 1740594909669 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-xxhash-3.5.0-py312h52516f5_2.conda + sha256: b0c7528f2597e33911f179dad9852a4958683533570f8cc68976068b444461f4 + md5: c6de44ac405bf8a793c57850ea6b427a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 23768 + timestamp: 1740595924431 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-xxhash-3.5.0-py312hea69d52_2.conda + sha256: 10c3df8dae696da4bd8532609999991ae1f3c4cc1a1e7f6a636cf6aa19d9eb82 + md5: b0c7097883bb4d8acfd72e7b9c6b93cd + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - xxhash >=0.8.3,<0.8.4.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 21947 + timestamp: 1740595129087 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 + md5: 62b20f305498284a07dc6c45fd0e5c87 + constrains: + - python 3.12.* *_cpython + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6329 + timestamp: 1723823366253 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.5.1-cpu_mkl_py312_heeca0f5_113.conda + sha256: dca9058fc3fd8c7720815a60f91fbed21c96deed1862c0779cb9849010a615e0 + md5: 0d0917b3ad4dad39ee9cf2340b6913e7 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libblas * *mkl + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mkl >=2024.2.2,<2025.0a0 + - networkx + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 27046950 + timestamp: 1739243439897 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pytorch-2.5.1-cpu_generic_py312_h819a134_13.conda + sha256: aca9f90080b41be87632b9be5c05d2d2583583cc8a88c2e4d9a755b4352443e8 + md5: 973311c703c92c0145a0ed6cd28ac1f0 + depends: + - _openmp_mutex >=4.5 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-cpu ==2.5.1 + - pytorch-gpu ==99999999 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26955065 + timestamp: 1739239589334 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytorch-2.5.1-cpu_generic_py312_h49ed405_13.conda + sha256: 80ad77e98a4d91287b4c5aad62fb73c19fdcd3bf8a4c46f3630fdb3795b613ac + md5: 8a4ecdb698c36fa439757454437f44bd + depends: + - __osx >=11.0 + - filelock + - fsspec + - jinja2 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libtorch 2.5.1.* + - libuv >=1.50.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-openmp >=18.1.8 + - networkx + - nomkl + - numpy >=1.19,<3 + - pybind11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + - sleef >=3.8,<4.0a0 + - sympy >=1.13.1,!=1.13.2 + - typing_extensions + constrains: + - pytorch-gpu ==99999999 + - pytorch-cpu ==2.5.1 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26176295 + timestamp: 1739248670305 +- conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hcc812fe_2.conda + sha256: dc78e41d51300722ba35ac4a10d37339ceffbe22d7501c71dfd3f633a4f8e79a + md5: 4de4a5ff81c941674e08595244e7cd61 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 199172 + timestamp: 1737454840766 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-26.2.1-py312h2427ae1_0.conda + sha256: 9558f9330093e5c21b7c04e2e212e19b9b88ad9c808315f12c0765b244018a09 + md5: 0520da8de6870d8ff63e818e927d1524 + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 375156 + timestamp: 1738273130727 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26786 + timestamp: 1735541074034 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/re2-2024.07.02-haa97905_2.conda + sha256: 040848655df9119bae5a549fb5c8956a5537120859416c1d9d0712b7bac9f12e + md5: 1bf0135339b4a7419a198a795d2d4be0 + depends: + - libre2-11 2024.07.02 h18dbdb1_2 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 26830 + timestamp: 1735540999398 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2024.07.02-h6589ca4_2.conda + sha256: 4d3799c05f8f662922a0acd129d119774760a3281b883603678e128d1cb307fb + md5: 7a8b4ad8c58a3408ca89d78788c78178 + depends: + - libre2-11 2024.07.02 h07bc746_2 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 26861 + timestamp: 1735541088455 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.conda + sha256: 54bed3a3041befaa9f5acde4a37b1a02f44705b7796689574bcf9d7beaad2959 + md5: c0f08fc2737967edde1a272d4bf41ed9 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: aarch64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 291806 + timestamp: 1740380591358 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/regex-2024.11.6-py312h66e93f0_0.conda + sha256: fcb5687d3ec5fff580b64b8fb649d9d65c999a91a5c3108a313ecdd2de99f06b + md5: 647770db979b43f9c9ca25dcfa7dc4e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 402821 + timestamp: 1730952378415 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/regex-2024.11.6-py312hb2c0f52_0.conda + sha256: ec2c416860de29224e447e2031f8686a05476759c17da1f32f61d4307e540ec8 + md5: fa8b589107567f532fa1380e66f91776 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Python-2.0 + license_family: PSF + size: 398947 + timestamp: 1730952477463 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/regex-2024.11.6-py312hea69d52_0.conda + sha256: dcdec32f2c7dd37986baa692bedf9db126ad34e92e5e9b64f707cba3d04d2525 + md5: e73cda1f18846b608284bd784f061eac + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + license_family: PSF + size: 366374 + timestamp: 1730952427552 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-13.9.4-pyhd8ed1ab_1.conda + sha256: 06a760c5ae572e72e865d5a87e9fe3cc171e1a9c996e63daf3db52ff1a0b4457 + md5: 7aed65d4ff222bfb7335997aa40b7da5 + depends: + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.9 + - typing_extensions >=4.0.0,<5.0.0 + license: MIT + license_family: MIT + size: 185646 + timestamp: 1733342347277 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-toolkit-0.11.3-pyh29332c3_0.conda + sha256: e558f8c254a9ff9164d069110da162fc79497d70c60f2c09a5d3d0d7101c5628 + md5: 4ba15ae9388b67d09782798347481f69 + depends: + - python >=3.9 + - rich >=13.7.1 + - click >=8.1.7 + - typing_extensions >=4.12.2 + - python + license: MIT + license_family: MIT + size: 17357 + timestamp: 1733750834072 +- conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.11-h072c03f_0.conda + sha256: cfdd98c8f9a1e5b6f9abce5dac6d590cc9fe541a08466c9e4a26f90e00b569e3 + md5: 5e8060d52f676a40edef0006a75c718f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 356213 + timestamp: 1737146304079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/s2n-1.5.11-h3caee7a_0.conda + sha256: 5a7ae66f96be24c3b2007139b6c3701ab015b4b4eb4eccfdd07be97710243a47 + md5: 1517c0518f8a06a48a15f41d94252874 + depends: + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 352811 + timestamp: 1737146319512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/safetensors-0.5.3-py312h12e396e_0.conda + sha256: 23dec8105d34e51cc2269a79680a666351233e2dc171ff14c46d3455d2c22080 + md5: fd1fc1f1e6ceee16d9a58d3ff5a57c7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + size: 431388 + timestamp: 1740651706122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/safetensors-0.5.3-py312h8cbf658_0.conda + sha256: 24ca173b9f39d5e5cabc6ea7e570b500682669e5910510020549f8696e29992d + md5: eb2d82d057535f4fb3182f43df429495 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + size: 417509 + timestamp: 1740651719895 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/safetensors-0.5.3-py312hcd83bfe_0.conda + sha256: 1d0412be1b16df769c69d537907e690be50d06d05f757ba2451facb6883a3eb3 + md5: 68b99db908e1ec63c0cacae262a835e9 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + size: 382676 + timestamp: 1740651813281 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-0.2.0-h6c1b121_10.conda + sha256: 846d885a560fbb4375b645e7caf2f756ef88bbeb441b670375da0090aaa427fb + md5: 33a89eb1dedae8eb7222b0a89856f337 + depends: + - libsentencepiece 0.2.0 h6164ad9_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h197ff68_10 + - sentencepiece-spm 0.2.0 h6164ad9_10 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19686 + timestamp: 1735628718991 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-python-0.2.0-py312h197ff68_10.conda + sha256: a7c2c19cc397c7632e2630af49ddcff128f145c93ea493421e6f42bfa5e1d30b + md5: 5642e4545a3cf03e446fb3b3e9fd723b + depends: + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2458076 + timestamp: 1735628298246 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sentencepiece-spm-0.2.0-h6164ad9_10.conda + sha256: b98fc1028a8e8fbf309af383f9c837290a14e076e6c5533dc251694ea33ffc6e + md5: a4b75936c01dca3f089f02752b7ee325 + depends: + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h6164ad9_10 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 85983 + timestamp: 1735628693813 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/sentinel-1.0.0-pyh29332c3_0.conda + sha256: 87f7d70b0a29627ce7f78a463c6609156aaee638cca917b5f6c6c70828446acf + md5: 82e861633beabad680253e03918ec4a2 + depends: + - python >=3.9 + - python + constrains: + - varname >=0.1 + license: MIT + license_family: MIT + size: 13828 + timestamp: 1740445106343 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.8.2-pyhff2d567_0.conda + sha256: 91d664ace7c22e787775069418daa9f232ee8bafdd0a6a080a5ed2395a6fa6b2 + md5: 9bddfdbf4e061821a1a443f93223be61 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 777736 + timestamp: 1740654030775 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_1.conda + sha256: 0557c090913aa63cdbe821dbdfa038a321b488e22bc80196c4b3b1aace4914ef + md5: 7c3c2a0f3ebdea2bbc35538d162b43bf + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 14462 + timestamp: 1733301007770 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sleef-3.8-h1b44611_0.conda + sha256: c998d5a29848ce9ff1c53ba506e7d01bbd520c39bbe72e2fb7cdf5a53bad012f + md5: aec4dba5d4c2924730088753f6fa164b + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSL-1.0 + size: 1920152 + timestamp: 1738089391074 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sleef-3.8-h8fb0607_0.conda + sha256: 86a19e4457bbc20d6c52a7cf0a010b2d99b704e78ae396f9fae4f4da9ae42cf3 + md5: 76647a886ead58ea5d82990117aafce2 + depends: + - _openmp_mutex >=4.5 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSL-1.0 + size: 1172391 + timestamp: 1738090891356 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sleef-3.8-h8391f65_0.conda + sha256: e8f26540b22fe2f1c9f44666a8fdf0786e7a40e8e69466d2567a53b106f6dff3 + md5: 6567410b336a7b8f775cd9157fb50d61 + depends: + - __osx >=11.0 + - libcxx >=18 + - llvm-openmp >=18.1.8 + arch: arm64 + platform: osx + license: BSL-1.0 + size: 584685 + timestamp: 1738089615902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 + depends: + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 + depends: + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 15019 + timestamp: 1733244175724 +- conda: https://conda.anaconda.org/conda-forge/noarch/sse-starlette-2.2.1-pyhd8ed1ab_0.conda + sha256: 3c6a476e7afb702d841e23c61a0c4cc491929d2e39376d329e67e94c40a236cc + md5: c1ef6bc13dd2caa4b406fb3cb06c2791 + depends: + - anyio >=4.7.0 + - python >=3.9 + - starlette >=0.41.3 + license: BSD-3-Clause + license_family: BSD + size: 15324 + timestamp: 1735126414893 +- conda: https://conda.anaconda.org/conda-forge/noarch/starlette-0.45.3-pyha770c72_0.conda + sha256: be48c99e6fb8e12ebee09e6fbb4d78a170b614cdaa19ab791a8f5b6caf09919a + md5: 9b3a68bc7aed7949ef86f950993261f4 + depends: + - anyio >=3.6.2,<5 + - python >=3.9 + - typing_extensions >=3.10.0 + license: BSD-3-Clause + license_family: BSD + size: 57934 + timestamp: 1737824077668 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tiktoken-0.9.0-py312h14ff09d_0.conda + sha256: aba3affdd0f87e198185ddc0986aa59cb067832dc88ffa6dedbe127da4f8d7bf + md5: 0f116f56298be1450a9db6b45bd2d9a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 968542 + timestamp: 1739550580537 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tiktoken-0.9.0-py312h4a2a8a5_0.conda + sha256: 924de648f79b934172cbeafed35ef7413fbd9944c9a76291bbf835da1cfaa0af + md5: 2c8304aecaaced4bbcfc715a5ed16a1a + depends: + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 916956 + timestamp: 1739553289605 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tiktoken-0.9.0-py312hf3e4074_0.conda + sha256: a4335c374e3af6c8ce3d0c413b7074c355e04059dca25853ef0961f4ae0ab39b + md5: ca9fecb880b6d35241324835804a98a0 + depends: + - __osx >=11.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - regex >=2022.1.18 + - requests >=2.26.0 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 827008 + timestamp: 1739550849700 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 + md5: f75105e0585851f818e0009dd1dde4dc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: TCL + license_family: BSD + size: 3351802 + timestamp: 1695506242997 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tokenizers-0.21.0-py312h8360d73_0.conda + sha256: 4f504a5e9d77c6d88a8f735c4319429d8bf40b742384f908a2efe0a09acc3cc5 + md5: f953aa733207f3d37acf4a3efbedba89 + depends: + - __glibc >=2.17,<3.0.a0 + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2258007 + timestamp: 1732734202127 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tokenizers-0.21.0-py312ha0d6ea1_0.conda + sha256: ef0f4d4e2c798b1821187ea0ba4c86484e48abaa0e9a19fe68030fa7ff5dde84 + md5: 077f48c9e0c08a30d842e15c51df4143 + depends: + - huggingface_hub >=0.16.4,<1.0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 2331194 + timestamp: 1732734303196 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tokenizers-0.21.0-py312hf3e4074_0.conda + sha256: 5d395333fcb22dc611140286c1f2ea8b3fa220a4931c583587cb612238091555 + md5: 4c732c74b485ef7ac8ec1c548dd45e8e + depends: + - __osx >=11.0 + - huggingface_hub >=0.16.4,<1.0 + - libcxx >=18 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 1931389 + timestamp: 1732734727624 +- conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 19167 + timestamp: 1733256819729 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda + sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc + md5: e28996d9d2d44d777b7e6fb12f63715b + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 841662 + timestamp: 1732616934923 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/transformers-4.49.0-pyhd8ed1ab_0.conda + sha256: d522d7dda6ebe296b20955b1be3eccc5d5cfdfd413457c1236323b6a08fffd9e + md5: e63e78e545fcf857cac3372edeb67ea4 + depends: + - datasets !=2.5.0 + - filelock + - huggingface_hub >=0.23.0,<1.0 + - numpy >=1.17 + - packaging >=20.0 + - python >=3.9 + - pyyaml >=5.1 + - regex !=2019.12.17 + - requests + - safetensors >=0.4.1 + - tokenizers >=0.21,<0.22 + - tqdm >=4.27 + license: Apache-2.0 + license_family: APACHE + size: 3514640 + timestamp: 1739826374204 +- conda: https://conda.anaconda.org/conda-forge/linux-64/triton-3.2.0-cuda126py312h5a3d8a8_0.conda + sha256: de5ede47f60573582a3aa6dc840c91a6c2002f294df22032ca91575174d60a21 + md5: 9c6facebce2e8fd1f9559ad14dc9dced + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - setuptools + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 101169812 + timestamp: 1738676149595 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/triton-3.2.0-cuda126py312h1ed5fa8_0.conda + sha256: abd91d81df1ef4b70546da24bc3b01b1aa7a5228bb7d4b73b38abab9dac74bfe + md5: f0c67131cc86daae8adf3ac221ee3a48 + depends: + - cuda-cudart + - cuda-cuobjdump + - cuda-cupti >=12.6.80,<13.0a0 + - cuda-nvcc-tools + - cuda-version >=12.6,<13 + - libgcc >=13 + - libllvm20 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - setuptools + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 103306412 + timestamp: 1738676445445 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.15.2-pyhff008b6_0.conda + sha256: fa6eeb42e3bddff74126dd61b01b21a3f4f4791368e93bc5a5775563542b2d4e + md5: 1152565b06e3dc27794c3c11f1050005 + depends: + - typer-slim-standard ==0.15.2 h801b22e_0 + - python >=3.9 + - python + license: MIT + size: 76158 + timestamp: 1740697495168 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-0.15.2-pyh29332c3_0.conda + sha256: c094713560bfacab0539c863010a5223171d9980cbd419cc799e474ae15aca08 + md5: 7c8d9609e2cfe08dd7672e10fe7e7de9 + depends: + - python >=3.9 + - click >=8.0.0 + - typing_extensions >=3.7.4.3 + - python + constrains: + - typer 0.15.2.* + - rich >=10.11.0 + - shellingham >=1.3.0 + license: MIT + size: 45866 + timestamp: 1740697495167 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-slim-standard-0.15.2-h801b22e_0.conda + sha256: 79b6b34e90e50e041908939d53053f69285714b0082a0370fba6ab3b38315c8d + md5: ea164fc4e03f61f7ff3c1166001969af + depends: + - typer-slim ==0.15.2 pyh29332c3_0 + - rich + - shellingham + license: MIT + size: 5409 + timestamp: 1740697495168 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + noarch: python + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + size: 10075 + timestamp: 1733188758872 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-0.34.0-pyh31011fe_0.conda + sha256: 55c160b0cf9274e2b98bc0f7fcce548bffa8d788bc86aa02801877457040f6fa + md5: 5d448feee86e4740498ec8f8eb40e052 + depends: + - __unix + - click >=7.0 + - h11 >=0.8 + - python >=3.9 + - typing_extensions >=4.0 + license: BSD-3-Clause + license_family: BSD + size: 48643 + timestamp: 1734293057914 +- conda: https://conda.anaconda.org/conda-forge/noarch/uvicorn-standard-0.34.0-h31011fe_0.conda + sha256: 87e1531e175e75122f9f37608eb953af4c977465ab0ae11283cc01fef954e4ec + md5: 32a94143a7f65d76d2d5da37dcb4ed79 + depends: + - __unix + - httptools >=0.6.3 + - python-dotenv >=0.13 + - pyyaml >=5.1 + - uvicorn 0.34.0 pyh31011fe_0 + - uvloop >=0.14.0,!=0.15.0,!=0.15.1 + - watchfiles >=0.13 + - websockets >=10.4 + license: BSD-3-Clause + license_family: BSD + size: 7203 + timestamp: 1734293058849 +- conda: https://conda.anaconda.org/conda-forge/linux-64/uvloop-0.21.0-py312h66e93f0_1.conda + sha256: 9337a80165fcf70b06b9d6ba920dad702260ca966419ae77560a15540e41ab72 + md5: 998e481e17c1b6a74572e73b06f2df08 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT OR Apache-2.0 + size: 701355 + timestamp: 1730214506716 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/uvloop-0.21.0-py312hb2c0f52_1.conda + sha256: 807eede6698bd00a1d739a3e19ee6ae6a03a66d2ddd2ef150f2dfd198c3b0292 + md5: d83e107ba16c77aba2feec47b7b666a4 + depends: + - libgcc >=13 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: MIT OR Apache-2.0 + size: 655266 + timestamp: 1730214606664 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/uvloop-0.21.0-py312h0bf5046_1.conda + sha256: b1efa77aa4871d7bb09c8dd297fa9bd9070ba7f0f95f2d12ae9cdd31ce8b6b22 + md5: 4f5110253ba80ebf27e55c4ab333880a + depends: + - __osx >=11.0 + - libuv >=1.49.2,<2.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT OR Apache-2.0 + size: 544097 + timestamp: 1730214653726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/watchfiles-1.0.4-py312h12e396e_0.conda + sha256: b728f525dcae2c10524f9942255346eba62aee9c820ff269d7dd4f7caffb7ffb + md5: df87129c4cb7afc4a3cbad71a1b9e223 + depends: + - __glibc >=2.17,<3.0.a0 + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 410192 + timestamp: 1736550568524 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/watchfiles-1.0.4-py312h8cbf658_0.conda + sha256: 45193910f6bafc287c784442d173745161b18f96223f0f990a9a744fda753787 + md5: ed958a27e610c31de625e167d4c11a04 + depends: + - anyio >=3.0.0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 403791 + timestamp: 1736550743174 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/watchfiles-1.0.4-py312hcd83bfe_0.conda + sha256: 84122e3712f2263e12c9d2be75d122eaf2d269801183df4b73aadcb670943b17 + md5: 946eb0208d09b811a671fad9b2831f4e + depends: + - __osx >=11.0 + - anyio >=3.0.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 363822 + timestamp: 1736550859472 +- conda: https://conda.anaconda.org/conda-forge/linux-64/websockets-15.0-py312h66e93f0_0.conda + sha256: 409a7a1d32e8ea23ee5233b2e95152cfaec8763aa9031f28cd8014594afc45df + md5: 5da55154de4cc82383f6bd52195db1c4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 263350 + timestamp: 1739780619751 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/websockets-15.0-py312hb2c0f52_0.conda + sha256: 7fe6b6150410f57b442e6d130fc433959c436ada975b2f9e6352b902381ece99 + md5: 998b97a00d49748c249b749edbf27107 + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 264378 + timestamp: 1739780675487 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/websockets-15.0-py312hea69d52_0.conda + sha256: 70f511b2f9f3e0e05f2d403200a55470f9dabf87d8830b42d9ff697b9677c946 + md5: ae0c72f9ce03b54723f1cf7a4066d083 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 264745 + timestamp: 1739780725559 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.2-py312h66e93f0_0.conda + sha256: ed3a1700ecc5d38c7e7dc7d2802df1bc1da6ba3d6f6017448b8ded0affb4ae00 + md5: 669e63af87710f8d52fdec9d4d63b404 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63590 + timestamp: 1736869574299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wrapt-1.17.2-py312hb2c0f52_0.conda + sha256: cc28914462a21b2f64d9b763a9733bfcbc811dd2975d0d2e6e429e35f5b6d59c + md5: 8a5c6e3f809bae085be369b62dc5d06a + depends: + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 63967 + timestamp: 1736869675870 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.2-py312hea69d52_0.conda + sha256: 6a3e68b57de29802e8703d1791dcacb7613bfdc17bbb087c6b2ea2796e6893ef + md5: e49608c832fcf438f70cbcae09c3adc5 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 61198 + timestamp: 1736869673767 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xgrammar-0.1.11-py312h6edf5ed_2.conda + sha256: ff584830ae7a0e3fb7929f1a7554ca3559c83d5e064aed717719647bcaf2189f + md5: 2e78c5fd9d1e586b0c635e02dbbaa761 + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libstdcxx >=13 + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4409669 + timestamp: 1740619132269 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xgrammar-0.1.11-py312hc94be92_2.conda + sha256: c283b9f9a73d77cfa806d276010dca62335428d11be170d61fc869b26a038b5a + md5: 1970aa1298826d9e2feb51d16368f5aa + depends: + - triton + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - libgcc >=13 + - libstdcxx >=13 + - libgcc >=13 + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 AND BSD-4-Clause + size: 4270904 + timestamp: 1740619375982 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xgrammar-0.1.11-py312hd6dbf26_2.conda + sha256: a6801464fd31ddc4e87ae4b210db9cea1bd39e5b3f0d7cc48d9673d53685667b + md5: 41f1c12abe32475b267fcb349fa5f7ab + depends: + - pydantic + - python + - sentencepiece + - tiktoken + - pytorch + - transformers + - pytest + - __osx >=11.0 + - libcxx >=18 + - python 3.12.* *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 AND BSD-4-Clause + size: 353403 + timestamp: 1740619156354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f + md5: 25a5a7b797fe6e084e04ffe2db02fc62 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 20615 + timestamp: 1727796660574 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xxhash-0.8.3-hb9d3cd8_0.conda + sha256: 3bbc35b9ee44ffea1de441f906ba05139873a28325f8a8ed152e17af30e62232 + md5: 2ef1822d8168ed5d79ab1bf01088419a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 107794 + timestamp: 1735848927308 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xxhash-0.8.3-h86ecc28_0.conda + sha256: f210d0b6b8543acef9b73db43a557c94e695f9dfaa2f6989057c449d9c3e1239 + md5: d992916b6e4f6e7412332bbcd41c5aa2 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 104556 + timestamp: 1735848964267 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xxhash-0.8.3-h5505292_0.conda + sha256: 43573d504e7edc4b876a9058dc316aa9851ced1d433c2b569d583c2db22c76e2 + md5: 92a98c1bbae4729dfd0216ca22c21858 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 98318 + timestamp: 1735849111725 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 + depends: + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py312h178313f_1.conda + sha256: 6b054c93dd19fd7544af51b41a8eacca2ab62271f6c0c5a2a0cffe80dc37a0ce + md5: 6822c49f294d4355f19d314b8b6063d8 + depends: + - __glibc >=2.17,<3.0.a0 + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 152305 + timestamp: 1737575898300 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py312hcc812fe_1.conda + sha256: bfa211c0dd5dbb308788f055277dc428b7923ceb2de6a22ea98bc17cf306f9f5 + md5: d14c78abdd6109e2b7162f53b6cc1e77 + depends: + - idna >=2.0 + - libgcc >=13 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 149654 + timestamp: 1737576065314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py312h998013c_1.conda + sha256: 48821d23567ca0f853eee6f7812c74392867e123798b5b3c44f58758d8eb580e + md5: 092d3b40acc67c470f379049be343a7a + depends: + - __osx >=11.0 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 145543 + timestamp: 1737576074753 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zeromq-4.3.5-h5efb499_7.conda + sha256: a6003096dc0570a86492040ba32b04ce7662b159600be2252b7a0dfb9414e21c + md5: f2f3282559a4b87b7256ecafb4610107 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 371419 + timestamp: 1731589490850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 + md5: bc230abb5d21b63ff4799b0e75204783 + depends: + - libgcc >=13 + - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux + license: Zlib + license_family: Other + size: 95582 + timestamp: 1727963203597 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 + depends: + - __osx >=11.0 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda + sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 + md5: ffcb8e97e62af42075e0e5f46bb9856e + depends: + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 392496 + timestamp: 1725305808244 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c + md5: be8d5f8cf21aed237b8b182ea86b3dd6 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 539937 + timestamp: 1714723130243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/src/max/pipelines/__init__.py b/src/max/pipelines/__init__.py new file mode 100644 index 0000000000..7e673e191f --- /dev/null +++ b/src/max/pipelines/__init__.py @@ -0,0 +1,102 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Types to interface with ML pipelines such as text/token generation.""" + +from typing import Callable as _Callable +from typing import Union as _Union + +from .config import ( + PipelineConfig, + PipelineEngine, + RopeType, + SamplingParams, + SupportedEncoding, + WeightsFormat, +) +from .context import InputContext, TextAndVisionContext, TextContext +from .embeddings_pipeline import EmbeddingsPipeline +from .hf_utils import HuggingFaceFile +from .interfaces import ( + EmbeddingsGenerator, + EmbeddingsResponse, + LogProbabilities, + PipelineTask, + PipelineTokenizer, + TextResponse, + TokenGenerator, + TokenGeneratorContext, + TokenGeneratorRequest, + TokenGeneratorRequestFunction, + TokenGeneratorRequestMessage, + TokenGeneratorRequestTool, + TokenGeneratorResponseFormat, +) +from .pipeline import ( + ModelInputs, + ModelOutputs, + PipelineModel, + TextGenerationPipeline, + upper_bounded_default, +) +from .registry import PIPELINE_REGISTRY, SupportedArchitecture +from .speculative_decoding import SpeculativeDecodingTextGenerationPipeline +from .tokenizer import ( + IdentityPipelineTokenizer, + PreTrainedPipelineTokenizer, + TextAndVisionTokenizer, + TextTokenizer, +) + +PipelinesFactory = _Callable[[], _Union[TokenGenerator, EmbeddingsGenerator]] + + +__all__ = [ + "HuggingFaceFile", + "PipelineConfig", + "PipelineEngine", + "PipelineTask", + "PIPELINE_REGISTRY", + "SamplingParams", + "SupportedArchitecture", + "SupportedEncoding", + "TokenGenerator", + "TokenGeneratorContext", + "TokenGeneratorRequest", + "TokenGeneratorRequestMessage", + "TokenGeneratorResponseFormat", + "TokenGeneratorRequestTool", + "TokenGeneratorResponseFormat", + "TokenGeneratorRequestFunction", + "IdentityPipelineTokenizer", + "InputContext", + "TextContext", + "TextAndVisionContext", + "PipelineTokenizer", + "PreTrainedPipelineTokenizer", + "TextTokenizer", + "TextAndVisionTokenizer", + "TextGenerationPipeline", + "WeightsFormat", + "RopeType", + "PipelineModel", + "ModelInputs", + "ModelOutputs", + "TextResponse", + "LogProbabilities", + "EmbeddingsGenerator", + "EmbeddingsPipeline", + "EmbeddingsResponse", + "SpeculativeDecodingTextGenerationPipeline", + "upper_bounded_default", +] diff --git a/src/max/pipelines/architectures/__init__.py b/src/max/pipelines/architectures/__init__.py new file mode 100644 index 0000000000..cfb90c5bd3 --- /dev/null +++ b/src/max/pipelines/architectures/__init__.py @@ -0,0 +1,49 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import PIPELINE_REGISTRY + + +def register_all_models(): + """Imports model architectures, thus registering the architecture in the shared PIPELINE_REGISTRY.""" + from .exaone import exaone_arch + from .granite import granite_arch + from .llama3 import llama_arch + from .llama_vision import llama_vision_arch + from .mistral import mistral_arch + from .mpnet import mpnet_arch + from .olmo import olmo_arch + from .phi3 import phi3_arch + from .pixtral import pixtral_arch + from .qwen2 import qwen2_arch + from .replit import replit_arch + + architectures = [ + exaone_arch, + llama_arch, + llama_vision_arch, + mistral_arch, + mpnet_arch, + olmo_arch, + phi3_arch, + pixtral_arch, + qwen2_arch, + replit_arch, + granite_arch, + ] + + for arch in architectures: + PIPELINE_REGISTRY.register(arch) + + +__all__ = ["register_all_models"] diff --git a/src/max/pipelines/architectures/deepseekV2/layers/__init__.py b/src/max/pipelines/architectures/deepseekV2/layers/__init__.py new file mode 100644 index 0000000000..fcf4807305 --- /dev/null +++ b/src/max/pipelines/architectures/deepseekV2/layers/__init__.py @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""DeepseekV2 layer modules.""" diff --git a/src/max/pipelines/architectures/deepseekV2/layers/moe_gate.py b/src/max/pipelines/architectures/deepseekV2/layers/moe_gate.py new file mode 100644 index 0000000000..fd814e5663 --- /dev/null +++ b/src/max/pipelines/architectures/deepseekV2/layers/moe_gate.py @@ -0,0 +1,82 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Mixture of Experts Gate Layer.""" + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, ops +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import LayerV2 + + +@dataclass +class MaxMoEGate(LayerV2): + """Mixture of Experts Gate Layer. + + Args: + gate_score: Linear layer that projects from hidden_size to intermediate_size. + num_experts_per_tok: Number of experts to route each token to. + n_routed_experts: Total number of experts in the model. + routed_scaling_factor: Scaling factor for routing weights. + aux_loss_alpha: Weight for auxiliary loss. + n_group: Number of groups for expert routing. + topk_group: Number of top experts per group. + gating_dim: Hidden dimension size for gating. + + Shape: + Input: (batch_size, seq_length, hidden_size) + Output: tuple of: + - topk_idx: (batch_size * seq_length, num_experts_per_tok) + - topk_weight: (batch_size * seq_length, num_experts_per_tok) + """ + + def __post_init__(self): + super().__init__() + + gate_score: Linear + num_experts_per_tok: int = 6 + n_routed_experts: int = 64 + routed_scaling_factor: float = 1.0 + aux_loss_alpha: float = 0.001 + n_group: int = 1 + topk_group: int = 1 + gating_dim: int = 2048 # equal to config.hidden_size + + def __call__( + self, hidden_states: TensorValue + ) -> tuple[TensorValue, TensorValue]: + """Compute expert routing weights and indices for input hidden states. + + Args: + hidden_states: Input tensor of shape (batch_size, seq_length, hidden_size) + + Returns: + tuple containing: + - topk_idx: Indices of top-k selected experts of shape (batch_size * seq_length, num_experts_per_tok) + - topk_weight: Routing weights for selected experts of shape (batch_size * seq_length, num_experts_per_tok) + """ + # compute gating score + bsz, seq_len, h = hidden_states.shape + hidden_states = hidden_states.reshape([bsz * seq_len, h]) + + logits = self.gate_score(hidden_states.cast(DType.float32)) + scores = ops.softmax(logits[-1].cast(DType.float32)) + + # select top k experts + topk_weight, topk_idx = ops.top_k( + scores, self.num_experts_per_tok, -1, False + ) + + return topk_idx, topk_weight diff --git a/src/max/pipelines/architectures/exaone/__init__.py b/src/max/pipelines/architectures/exaone/__init__.py new file mode 100644 index 0000000000..5a5f6a2981 --- /dev/null +++ b/src/max/pipelines/architectures/exaone/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import exaone_arch + +__all__ = ["exaone_arch"] diff --git a/src/max/pipelines/architectures/exaone/arch.py b/src/max/pipelines/architectures/exaone/arch.py new file mode 100644 index 0000000000..ce2bfbb8e4 --- /dev/null +++ b/src/max/pipelines/architectures/exaone/arch.py @@ -0,0 +1,59 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from ..llama3.model import Llama3Model +from .weight_adapters import convert_exaone_safetensor_state_dict + +exaone_arch = SupportedArchitecture( + name="ExaoneForCausalLM", + default_encoding=SupportedEncoding.float32, + task=PipelineTask.TEXT_GENERATION, + supported_encodings={ + SupportedEncoding.q4_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.q6_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + example_repo_ids=[ + "LGAI-EXAONE/EXAONE-3.5-2.4B-Instruct", + "LGAI-EXAONE/EXAONE-3.5-7.8B-Instruct", + "LGAI-EXAONE/EXAONE-3.5-32B-Instruct", + ], + pipeline_model=Llama3Model, + tokenizer=TextTokenizer, + rope_type=RopeType.neox, + default_weights_format=WeightsFormat.gguf, + weight_adapters={ + WeightsFormat.safetensors: convert_exaone_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/exaone/weight_adapters.py b/src/max/pipelines/architectures/exaone/weight_adapters.py new file mode 100644 index 0000000000..39fcd27b0b --- /dev/null +++ b/src/max/pipelines/architectures/exaone/weight_adapters.py @@ -0,0 +1,56 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from max.graph.weights import WeightData, Weights +from transformers import LlamaConfig + +from ..llama3.weight_adapters import _compute_safetensor_rope_scaling + +# Maps Exaone Safetensor to MAX weight names. +EXAONE_SAFETENSOR_MAPPING = { + "transformer.wte": "embed_tokens", + "transformer.h": "layers", + "mlp.c_fc_1": "mlp.up_proj", + "mlp.c_proj": "mlp.down_proj", + "mlp.c_fc_0": "mlp.gate_proj", + "ln_2": "post_attention_layernorm", + "ln_1": "input_layernorm", + "attn.attention.q_proj": "self_attn.q_proj", + "attn.attention.v_proj": "self_attn.v_proj", + "attn.attention.k_proj": "self_attn.k_proj", + "attn.attention.out_proj": "self_attn.o_proj", + "transformer.ln_f": "norm", +} + + +def convert_exaone_safetensor_state_dict( + state_dict: dict[str, Weights], + huggingface_config: LlamaConfig, + **unused_kwargs, +) -> dict[str, WeightData]: + new_state_dict: dict[str, WeightData] = {} + # Map the weight names. + for safetensor_name, value in state_dict.items(): + max_name = safetensor_name + for before, after in EXAONE_SAFETENSOR_MAPPING.items(): + max_name = max_name.replace(before, after) + new_state_dict[max_name] = value.data() + # Add rope scaling to the state dict. + rope_scaling = _compute_safetensor_rope_scaling(huggingface_config) + if rope_scaling is not None: + new_state_dict["rope_freqs.weight"] = WeightData.from_numpy( + rope_scaling, "rope_freqs.weight" + ) + return new_state_dict diff --git a/src/max/pipelines/architectures/granite/__init__.py b/src/max/pipelines/architectures/granite/__init__.py new file mode 100644 index 0000000000..95f180a1e2 --- /dev/null +++ b/src/max/pipelines/architectures/granite/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import granite_arch + +__all__ = ["granite_arch"] diff --git a/src/max/pipelines/architectures/granite/arch.py b/src/max/pipelines/architectures/granite/arch.py new file mode 100644 index 0000000000..e8d4fb19de --- /dev/null +++ b/src/max/pipelines/architectures/granite/arch.py @@ -0,0 +1,55 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from .model import GraniteModel + +granite_arch = SupportedArchitecture( + name="GraniteForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=[ + "ibm-granite/granite-3.1-8b-instruct", + "ibm-granite/granite-3.1-8b-base", + ], + default_weights_format=WeightsFormat.gguf, + default_encoding=SupportedEncoding.float32, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=GraniteModel, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/granite/model.py b/src/max/pipelines/architectures/granite/model.py new file mode 100644 index 0000000000..a3dc42da60 --- /dev/null +++ b/src/max/pipelines/architectures/granite/model.py @@ -0,0 +1,38 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from max.engine import InferenceSession +from max.graph import ops +from max.pipelines import PipelineConfig + +from ..llama3.model import Llama3Model + + +class GraniteModel(Llama3Model): + """Granite pipeline model implementation.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + + logits_scaling = getattr( + self.pipeline_config.huggingface_config, "logits_scaling", 1.0 + ) + + if logits_scaling != 1.0: + self.logits_processor = lambda logits: logits / ops.constant( + logits_scaling, logits.dtype + ) diff --git a/src/max/pipelines/architectures/llama3/README.md b/src/max/pipelines/architectures/llama3/README.md new file mode 100644 index 0000000000..dfff0ded91 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/README.md @@ -0,0 +1,134 @@ +# Llama 3.1 + +**Language:** Python + +**API**: MAX Graph + +This pipeline provides optimized support for the `LlamaForCausalLM` family +of large language models, as exemplified by the Llama 3.1 text completion +model. The model itself has been constructed in Python +using the [MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a large language +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +## Model + +[Llama 3.1](https://llama.meta.com/llama3/) is an open source large language +model released by Meta. The structure of this implementation was inspired by +Andrej Karpathy's [llama2.c](https://github.com/karpathy/llama2.c) and its [Mojo +port by Aydyn Tairov](https://github.com/tairov/llama2.mojo). + +The text completion demo is compatible with the the official Llama 3 +[text completion demo](https://github.com/meta-llama/llama3/blob/14aab0428d3ec3a9596f1dea06d9c564f9c0e35f/example_text_completion.py). + +The default settings for this pipeline use the 8B set of pretrained weights in +`q4_k` quantized encodings. + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/pipelines + ``` + +3. Now run the Llama 3.1 text completion demo with the following command: + + ```shell + magic run generate --model-path="modularai/Llama-3.1-8B-Instruct-GGUF" --prompt "I believe the meaning of life is" + ``` + +4. Host a chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `--serve` argument. + For example: + + ```shell + magic run serve --model-path="modularai/Llama-3.1-8B-Instruct-GGUF" + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "modularai/llama-3.1", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + ``` + + Additionally, finetuned weights hosted on Hugging Face for any compatible + `LlamaForCausalLM` model can be used with this optimized architecture + via the `serve` command: + + ```shell + magic run serve --model-path=meta-llama/Llama-3.2-1B + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--max-length`: Controls the maximum length of the text sequence (includes the + input tokens). Defaults to huggingface model config's max sequence length. +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--prompt`: The text prompt to use for further generation. +- `--quantization-encoding`: The encoding to use for a datatype that can be + quantized to a low bits per weight format. The options for quantized formats + will download and cache default weights, but `float32` requires the use of + `--weight-path` to specify locally downloaded full-precision weights for use + in the model. + Valid values: `q4_0`, `q4_k`, `q6_k`, `bfloat16`, `float32`. + (Default value: `float32`). +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--version`: Selects which version in the Llama 3 family to use. + Valid values: `3`, `3.1`. + (Default value: `3.1`) +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". + Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/llama3/__init__.py b/src/max/pipelines/architectures/llama3/__init__.py new file mode 100644 index 0000000000..a70f69fa33 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import llama_arch + +__all__ = ["llama_arch"] diff --git a/src/max/pipelines/architectures/llama3/arch.py b/src/max/pipelines/architectures/llama3/arch.py new file mode 100644 index 0000000000..2bdd4dd5c2 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/arch.py @@ -0,0 +1,66 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from . import weight_adapters +from .model import Llama3Model + +llama_arch = SupportedArchitecture( + name="LlamaForCausalLM", + example_repo_ids=[ + "meta-llama/Llama-3.1-8B-Instruct", + "deepseek-ai/DeepSeek-R1-Distill-Llama-8B", + "meta-llama/Llama-Guard-3-8B", + "meta-llama/Llama-3.2-1B-Instruct", + "meta-llama/Llama-3.2-3B-Instruct", + "deepseek-ai/deepseek-coder-6.7b-instruct", + "modularai/llama-3.1", + ], + default_encoding=SupportedEncoding.q4_k, + supported_encodings={ + SupportedEncoding.gptq: [ + KVCacheStrategy.PAGED, + ], + SupportedEncoding.q4_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.q4_0: [KVCacheStrategy.NAIVE], + SupportedEncoding.q6_k: [KVCacheStrategy.NAIVE], + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=Llama3Model, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + default_weights_format=WeightsFormat.safetensors, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, + task=PipelineTask.TEXT_GENERATION, +) diff --git a/src/max/pipelines/architectures/llama3/config.py b/src/max/pipelines/architectures/llama3/config.py new file mode 100644 index 0000000000..50f0849b0c --- /dev/null +++ b/src/max/pipelines/architectures/llama3/config.py @@ -0,0 +1,54 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""All configurable parameters for Llama3.""" + +from __future__ import annotations + +from max.pipelines import HuggingFaceFile, SupportedEncoding + + +def get_llama_huggingface_file( + version: str, encoding: SupportedEncoding, revision: str | None = None +) -> HuggingFaceFile: + if version == "3": + filenames = { + SupportedEncoding.bfloat16: "llama-3-8b-instruct-bf16.gguf", + SupportedEncoding.float32: "llama-3-8b-f32.gguf", + SupportedEncoding.q4_k: "llama-3-8b-instruct-q4_k_m.gguf", + SupportedEncoding.q4_0: "llama-3-8b-instruct-q4_0.gguf", + SupportedEncoding.q6_k: "llama-3-8b-instruct-q6_k.gguf", + } + filename = filenames.get(encoding) + if filename is None: + raise ValueError( + f"encoding does not have default hf file: {encoding}" + ) + return HuggingFaceFile("modularai/llama-3", filename, revision) + + elif version == "3.1": + filenames = { + SupportedEncoding.bfloat16: "llama-3.1-8b-instruct-bf16.gguf", + SupportedEncoding.float32: "llama-3.1-8b-instruct-f32.gguf", + SupportedEncoding.q4_k: "llama-3.1-8b-instruct-q4_k_m.gguf", + SupportedEncoding.q4_0: "llama-3.1-8b-instruct-q4_0.gguf", + SupportedEncoding.q6_k: "llama-3.1-8b-instruct-q6_k.gguf", + } + filename = filenames.get(encoding) + if filename is None: + raise ValueError( + f"encoding does not have default hf file: {encoding}" + ) + return HuggingFaceFile("modularai/llama-3.1", filename, revision) + + else: + raise ValueError(f"version {version} not supported for llama") diff --git a/src/max/pipelines/architectures/llama3/gguf.py b/src/max/pipelines/architectures/llama3/gguf.py new file mode 100644 index 0000000000..97255112b2 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/gguf.py @@ -0,0 +1,468 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Llama3 model via Graph API from GGUF weights.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass +from typing import List, Literal, Optional + +import numpy as np +from max.dtype import DType +from max.graph import ( + DeviceRef, + Graph, + TensorValue, + TensorValueLike, + ops, +) +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import Weights +from max.pipelines import PipelineConfig, RopeType, WeightsFormat +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + DistributedAttentionWithRope, + DistributedMLP, + DistributedRMSNorm, + DistributedTransformer, + DistributedTransformerBlock, + Embedding, + Linear, + LinearV2, + OptimizedRotaryEmbedding, + RMSNorm, + VocabParallelEmbedding, +) +from max.pipelines.nn.layer import Layer + + +def distribute_value( + v: TensorValue, devices: List[DeviceRef] +) -> List[TensorValue]: + return [v.to(device) for device in devices] + + +def shard_col_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + col_size = int(v.shape[1]) // n_devices + return [ + v[:, i * col_size : (i + 1) * col_size].to(device) + for i, device in enumerate(devices) + ] + + +def shard_row_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + row_size = int(v.shape[0]) // n_devices + return [ + v[i * row_size : (i + 1) * row_size, :].to(device) + for i, device in enumerate(devices) + ] + + +@dataclass +class Phi3MLP(Layer): + """ + A multi-layer perceptron composed of two linear layers. Where the + gate_up_proj is a stacked linear layer which contains the up_proj and + gate_proj. This is used by the Phi3 models. + """ + + gate_up_proj: Linear + down_proj: Linear + + def __call__(self, x: TensorValue) -> TensorValue: + up_states = self.gate_up_proj(x) + + gate = up_states[:, : up_states.shape.static_dims[0] // 2] + up_states = up_states[:, up_states.shape.static_dims[0] // 2 :] + + return self.down_proj(ops.silu(gate) * up_states) + + +def rms_norm(dims: int, eps: float, weights: Weights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.float32, [dims]), eps) + + +@dataclass +class LayerNorm(Layer): + """Layer normalization block.""" + + gamma: TensorValue + beta: TensorValue + eps: float = 1e-5 + + def __call__(self, input: TensorValue): + return ops.cast( + ops.layer_norm( + ops.cast(input, DType.float32), + gamma=ops.cast(self.gamma, DType.float32), + beta=ops.cast(self.beta, DType.float32), + epsilon=self.eps, + ), + input.dtype, + ) + + +def layer_norm(dims: int, eps: float = 1e-5) -> LayerNorm: + gamma = ops.constant(np.ones(dims), DType.float32) + beta = ops.constant(np.zeros(dims), DType.float32) + return LayerNorm(gamma, beta, eps=eps) + + +def norm( + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + pipeline_config: PipelineConfig, + weights: Weights, + weight_name: str, +) -> RMSNorm | LayerNorm: + if norm_method == "rms_norm": + if pipeline_config.huggingface_config.model_type == "exaone": + rms_norm_eps = pipeline_config.huggingface_config.layer_norm_epsilon + else: + rms_norm_eps = pipeline_config.huggingface_config.rms_norm_eps + + return rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights[weight_name], + ) + else: + return layer_norm(pipeline_config.huggingface_config.hidden_size) + + +def distributed_norm( + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + pipeline_config: PipelineConfig, + weights: Weights, + weight_name: str, + devices: List[DeviceRef], +) -> DistributedRMSNorm: + assert norm_method == "rms_norm" + + weights_ = TensorValue( + weights[weight_name].weight.allocate( + DType.float32, + [pipeline_config.huggingface_config.hidden_size], + ) + ) + weights_devs = distribute_value(weights_, devices) + + rms_norms = [ + RMSNorm(weights_dev, pipeline_config.huggingface_config.rms_norm_eps) + for weights_dev in weights_devs + ] + + return DistributedRMSNorm(rms_norms, devices) + + +def embedding( + pipeline_config: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: Weights, +) -> Embedding: + if pipeline_config.quantization_encoding == "gptq": + return Embedding( + weights.weight.allocate( + DType.bfloat16, + [vocab_size, hidden_dim], + None, + ) + ) + + else: + return Embedding( + weights.weight.allocate( + pipeline_config.dtype, + [vocab_size, hidden_dim], + pipeline_config.graph_quantization_encoding, + ) + ) + + +def distributed_feed_forward( + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + hidden_dim: int, + feed_forward_length: int, + weights: Weights, + devices: List[DeviceRef], +) -> DistributedMLP: + w_ffn_down_full = weights.ffn_down.weight.allocate( + dtype, [hidden_dim, feed_forward_length], quantization_encoding + ) + ffn_down_sharded = shard_col_value(w_ffn_down_full, devices) + w_ffn_gate_full = weights.ffn_gate.weight.allocate( + dtype, [feed_forward_length, hidden_dim], quantization_encoding + ) + ffn_gate_sharded = shard_row_value(w_ffn_gate_full, devices) + w_ffn_up_full = weights.ffn_up.weight.allocate( + dtype, [feed_forward_length, hidden_dim], quantization_encoding + ) + ffn_up_sharded = shard_row_value(w_ffn_up_full, devices) + + mlps = [ + MLP( + Linear(ffn_gate_sharded[rank]), + Linear(ffn_down_sharded[rank]), + Linear(ffn_up_sharded[rank]), + ) + for rank in range(len(devices)) + ] + + return DistributedMLP(mlps, len(devices)) + + +def distributed_attention_opaque( + kv_params: KVCacheParams, + pipeline_config: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: Weights, + layer_idx: TensorValue, + devices: List[DeviceRef], +) -> DistributedAttentionWithRope: + wq_full = ops.transpose( + weights.attn_q.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + ], + pipeline_config.graph_quantization_encoding, + ), + 0, + 1, + ) + kv_weight_dim = ( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ) * pipeline_config.huggingface_config.num_key_value_heads + wk_full = ops.transpose( + weights.attn_k.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + pipeline_config.graph_quantization_encoding, + ), + 0, + 1, + ) + wv_full = ops.transpose( + weights.attn_v.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + pipeline_config.graph_quantization_encoding, + ), + 0, + 1, + ) + + wo_full = weights.attn_output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + ], + pipeline_config.graph_quantization_encoding, + ) + wq_shards = shard_col_value(wq_full, devices) + wk_shards = shard_col_value(wk_full, devices) + wv_shards = shard_col_value(wv_full, devices) + + # Didn't transpose here since linear will transpose so shard on col instead + # of row + wo_shards = shard_col_value(wo_full, devices) + attns = [ + AttentionWithRope( + n_heads=pipeline_config.huggingface_config.num_attention_heads + // len(devices), + kv_params=kv_params, + wqkv=ops.concat( + (wq_shards[rank], wk_shards[rank], wv_shards[rank]), axis=1 + ).transpose(0, 1), + wo=Linear(wo_shards[rank]), + rope=rope, + layer_idx=layer_idx, + scale=math.sqrt(1.0 / kv_params.head_dim), + ) + for rank in range(len(devices)) + ] + + return DistributedAttentionWithRope(attns, devices) + + +def _kv_collection_constructor( + kv_params: KVCacheParams, +) -> FetchContinuousBatchingKVCacheCollection | FetchPagedKVCacheCollection: + """Gets the fetch KV collection based on the KV cache strategy. + + Returns: + Callable that stages an op to fetch a KV cache collection. + + Raises: + ValueError: If the cache strategy is unsupported. + """ + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + return FetchContinuousBatchingKVCacheCollection(kv_params) + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + return FetchPagedKVCacheCollection(kv_params) + + msg = f"Unsupported caching strategy {kv_params.cache_strategy}" + raise ValueError(msg) + + +def distributed_transformer_opaque( + graph: Graph, + pipeline_config: PipelineConfig, + weights: Weights, + max_seq_len: int, + kv_params: KVCacheParams, + norm_method: Literal["rms_norm"] | Literal["layer_norm"], +) -> DistributedTransformer: + devices = [ + DeviceRef(spec.device_type, spec.id) + for spec in pipeline_config.device_specs + ] + with graph: + if weights.rope_freqs.weight.exists(): + rope_scaling = weights.rope_freqs.weight.raw_tensor() + else: + rope_scaling = None + + interleaved_rope_weights = ( + pipeline_config.weights_format == WeightsFormat.gguf + and pipeline_config.rope_type == RopeType.normal + ) + partial_rotary_factor = getattr( + pipeline_config.huggingface_config, "partial_rotary_factor", 1 + ) + rope = OptimizedRotaryEmbedding( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=partial_rotary_factor + * pipeline_config.huggingface_config.num_attention_heads, + theta=pipeline_config.huggingface_config.rope_theta, + max_seq_len=max_seq_len, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + + layers = [ + DistributedTransformerBlock( + attention=distributed_attention_opaque( + kv_params, + pipeline_config, + rope, + weights.blk[i], + layer_idx=ops.constant(i, DType.uint32), + devices=devices, + ), + mlp=distributed_feed_forward( + pipeline_config.dtype, + pipeline_config.graph_quantization_encoding, + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.intermediate_size, + weights.blk[i], + devices=devices, + ), + attention_norm=distributed_norm( + norm_method, + pipeline_config, + weights.blk[i], + "attn_norm", + devices=devices, + ), + mlp_norm=distributed_norm( + norm_method, + pipeline_config, + weights.blk[i], + "ffn_norm", + devices=devices, + ), + devices=devices, + ) + for i in range(pipeline_config.huggingface_config.num_hidden_layers) + ] + + # TODO(max.nn.Model): We still rely on the `Weights` mechanism for + # constructing the Python-side weights registry. + # So we have to "allocate" a spot in the weights registry for + # output/embedding weights here. + embedding_weight = weights.token_embd.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + ], + ) + weights.output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + ], + ) + + embedding_layer = VocabParallelEmbedding( + vocab_size=pipeline_config.huggingface_config.vocab_size, + hidden_dim=pipeline_config.huggingface_config.hidden_size, + dtype=pipeline_config.dtype, + devices=devices, + # Use the embedding weight's name, which mismatches between + # Safetensors and GGUF Llama 3. + name=embedding_weight.name, + ) + + output = LinearV2( + in_dim=pipeline_config.huggingface_config.hidden_size, + out_dim=pipeline_config.huggingface_config.vocab_size, + dtype=pipeline_config.dtype, + # Only compute output embedding on device 0 for now. + # TODO(MODELS-378): More optimal would be to: + # - Shard embedding table across devices. + # - Compute output on all devices for multistep. + device=devices[0], + # Smaller model variants lack dedicated weights for a final linear + # layer, and share the embedding layer. + name=( + weights.output.name + if weights.output.weight.exists() + else embedding_layer.weight.name + ), + ) + + return DistributedTransformer( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=pipeline_config.huggingface_config.num_attention_heads, + layers=layers, + norm=norm(norm_method, pipeline_config, weights, "output_norm"), # type:ignore + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=_kv_collection_constructor(kv_params), + devices=devices, + all_logits=pipeline_config.enable_echo, + ) diff --git a/src/max/pipelines/architectures/llama3/llama3.py b/src/max/pipelines/architectures/llama3/llama3.py new file mode 100644 index 0000000000..a35e90e60a --- /dev/null +++ b/src/max/pipelines/architectures/llama3/llama3.py @@ -0,0 +1,198 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Llama3 model that uses continuous or paged kv-caching""" + +from __future__ import annotations + +import functools +from typing import Callable, Literal, Optional + +import numpy as np +from max.dtype import DType +from max.graph import DeviceRef, TensorValue +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + AttentionWithRopeV2, + EmbeddingV2, + GPTQAttentionWithRope, + GPTQLinearV2, + LayerV2, + LinearV2, + OptimizedRotaryEmbedding, + RMSNormV2, + Transformer, + TransformerBlock, +) + +from .naive_llama3 import ConstantLayerNorm, Llama3MLP, StackedMLP + + +class Llama3(Transformer): + def __init__( + self, + *, + hidden_size: int, + num_attention_heads: int, + num_key_value_heads: int, + num_hidden_layers: int, + rope_theta: float, + max_seq_len: int, + intermediate_size: int, + interleaved_rope_weights: bool, + rope_scaling: Optional[np.ndarray], + vocab_size: int, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + quantization_config: Optional[QuantizationConfig], + kv_params: KVCacheParams, + all_logits: bool, + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + rms_norm_eps: Optional[float], + tie_word_embeddings: bool, + stacked_mlp: bool, + stacked_qkv: bool, + logits_postprocessor: Callable[[TensorValue], TensorValue] | None, + attention_multiplier: float, + embedding_multiplier: float, + residual_multiplier: float, + devices: list[DeviceRef], + clip_qkv: Optional[float], + ): + rope = OptimizedRotaryEmbedding( + dim=hidden_size, + n_heads=num_attention_heads, + theta=rope_theta, + max_seq_len=max_seq_len, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + create_norm: Callable[..., LayerV2] + if norm_method == "rms_norm": + if rms_norm_eps is None: + raise ValueError( + "rms_norm_eps cannot be None for model that uses RMSNorm." + ) + create_norm = functools.partial( + RMSNormV2, hidden_size, rms_norm_eps + ) + else: + create_norm = functools.partial(ConstantLayerNorm, hidden_size) + + linear_cls: Callable[..., LinearV2] + if quantization_config: + linear_cls = functools.partial( + GPTQLinearV2, quantization_config=quantization_config + ) + else: + linear_cls = LinearV2 + mlp_cls = StackedMLP if stacked_mlp else Llama3MLP + attention_cls: Callable[..., AttentionWithRopeV2] + if quantization_config: + attention_cls = functools.partial( + GPTQAttentionWithRope, + quantization_config=quantization_config, + scale=attention_multiplier, + ) + else: + attention_cls = functools.partial( + AttentionWithRopeV2, + stacked_qkv=stacked_qkv, + scale=attention_multiplier, + clip_qkv=clip_qkv, + ) + + layers = [ + TransformerBlock( + attention=attention_cls( + num_attention_heads=num_attention_heads, + num_key_value_heads=num_key_value_heads, + hidden_size=hidden_size, + kv_params=kv_params, + layer_idx=i, + dtype=dtype, + rope=rope, + linear_cls=linear_cls, + device=devices[0], + ), + mlp=mlp_cls( + dtype, + quantization_encoding, + hidden_size, + intermediate_size, + linear_cls, + # devices=devices, # TODO(kathywu): setting devices causes issues + ), + attention_norm=create_norm(), + mlp_norm=create_norm(), + residual_multiplier=residual_multiplier, + ) + for i in range(num_hidden_layers) + ] + + # Create Embedding and output layers. + embedding_output_dtype = dtype + embedding_output_quantization = quantization_encoding + if quantization_encoding == QuantizationEncoding.GPTQ: + embedding_output_dtype = DType.bfloat16 + embedding_output_quantization = None + + embedding_layer = EmbeddingV2( + vocab_size, + hidden_size, + embedding_output_dtype, + None, # TODO(kathywu): setting devices causes issues + quantization_encoding=embedding_output_quantization, + ) + output = LinearV2( + hidden_size, + vocab_size, + embedding_output_dtype, + None, # TODO(kathywu): setting devices causes issues + quantization_encoding=embedding_output_quantization, + ) + + if tie_word_embeddings: + output.set_shared_weight("weight", embedding_layer.weight) + + kv_collection_cls: ( + type[FetchContinuousBatchingKVCacheCollection] + | type[FetchPagedKVCacheCollection] + ) + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + kv_collection_cls = FetchContinuousBatchingKVCacheCollection + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + kv_collection_cls = FetchPagedKVCacheCollection + else: + raise ValueError( + "Unsupported caching strategy " + str(kv_params.cache_strategy) + ) + + super().__init__( + dim=hidden_size, + n_heads=num_attention_heads, + layers=layers, + norm=create_norm(), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection_cls(kv_params), + all_logits=all_logits, + embedding_multiplier=embedding_multiplier, + logits_postprocessor=logits_postprocessor, + ) diff --git a/src/max/pipelines/architectures/llama3/model.py b/src/max/pipelines/architectures/llama3/model.py new file mode 100644 index 0000000000..deb5de0c32 --- /dev/null +++ b/src/max/pipelines/architectures/llama3/model.py @@ -0,0 +1,830 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import math +import time +from typing import Any, Callable, List, Literal, Sequence, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession, Model +from max.graph import DeviceRef, Graph, TensorType, TensorValue +from max.graph.weights import Weights +from max.pipelines import ( + LogProbabilities, + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + RopeType, + SupportedEncoding, + TextContext, + WeightsFormat, + upper_bounded_default, +) +from max.pipelines.dataprocessing import batch_padded_tokens_and_mask +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) +from max.pipelines.nn import Signals +from max.pipelines.nn.compute_log_probabilities import compute_log_probabilities + +from .gguf import distributed_transformer_opaque +from .llama3 import Llama3 +from .naive_llama3 import NaiveLlama3 +from .weight_adapters import LlamaSafetensorWeights + +logger = logging.getLogger("max.pipelines") + + +class Llama3Inputs(ModelInputs): + """A class representing inputs for the Llama3 model. + + This class encapsulates the input tensors required for the Llama3 model + execution. + """ + + tokens: np.ndarray | Tensor + """Tensor containing the input token IDs.""" + + input_row_offsets_or_attn_mask: np.ndarray | Tensor + """Tensor containing the offsets for each row in the ragged input sequence, + or the attention mask for the padded input sequence.""" + + signal_buffers: list[Tensor] + """Device buffers used for synchronization in communication collectives.""" + + def __init__( + self, + tokens: np.ndarray | Tensor, + input_row_offsets_or_attn_mask: np.ndarray | Tensor, + signal_buffers: list[Tensor], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> None: + """ + Args: + tokens: Input token IDs. + input_row_offsets_or_attn_mask: Input row offsets (ragged tensors) + or attention mask (padded tensors). + signal_buffers: Device buffers used for synchronization in + communication collectives. + """ + self.tokens = tokens + self.input_row_offsets_or_attn_mask = input_row_offsets_or_attn_mask + self.signal_buffers = signal_buffers + self.kv_cache_inputs = kv_cache_inputs + + @property + def input_row_offsets(self) -> np.ndarray | Tensor: + """Gets the row offsets of the ragged input sequence.""" + # TODO(bduke): this should implement a ragged tensor interface. + return self.input_row_offsets_or_attn_mask + + +class LlamaModelBase(PipelineModel[TextContext]): + """Base Llama pipeline model implementation.""" + + model: Model + """Compiled and initialized model ready for inference.""" + + signal_buffers: list[Tensor] + """Device buffers used for synchronization in communication collectives.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] + """Normalization layer.""" + + logits_postprocessor: Callable[[TensorValue], TensorValue] | None = None + """Postprocessor for the logits.""" + + state_dict: dict[str, Any] + """Weights to load into the model.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + """ + Args: + pipeline_config: The configuration for this pipeline. + session: The container for the runtime for this model. + """ + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + # Initialize state needed for communication collectives. + self.signal_buffers = ( + [ + Tensor.zeros( + shape=(Signals.NUM_BYTES,), + dtype=DType.uint8, + device=dev, + ) + for dev in pipeline_config.devices + ] + if len(pipeline_config.devices) > 1 + # Skip creating buffers for single-device, where communication + # collectives shouldn't be called. + else [] + ) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_key_value_heads, + head_dim=( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ), + page_size=pipeline_config.kv_cache_page_size, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + n_devices=len(pipeline_config.devices), + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + def execute( + self, + model_inputs: ModelInputs, + ) -> ModelOutputs: + model_inputs = cast(Llama3Inputs, model_inputs) + curr_kv_cache_inputs = model_inputs.kv_cache_inputs or () + model_outputs = self.model.execute( + model_inputs.tokens, + model_inputs.input_row_offsets_or_attn_mask, + *model_inputs.signal_buffers, + *curr_kv_cache_inputs, + copy_inputs_to_device=( + not self.pipeline_config.cache_strategy.uses_opaque() + ), + ) + + if self.pipeline_config.enable_echo: + return ModelOutputs( + next_token_logits=cast(Tensor, model_outputs[0]), + logits=cast(Tensor, model_outputs[1]), + ) + else: + return ModelOutputs( + next_token_logits=cast(Tensor, model_outputs[0]) + ) + + def _prepare_ragged_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> Llama3Inputs: + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + + return Llama3Inputs( + tokens=Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy( + input_row_offsets + ).to(self.pipeline_config.devices[0]), + signal_buffers=self.signal_buffers, + kv_cache_inputs=kv_cache_inputs, + ) + + def _prepare_padded_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> Llama3Inputs: + # Get tokens and seq_ids + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens and compute attention mask for the batch. + max_seq_len = self.kv_manager.max_sequence_length + start_pos = [max_seq_len] * len(context_batch) + next_tokens_batch, _, attn_mask = batch_padded_tokens_and_mask( + start_pos=start_pos, + tokens=tokens, + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + + return Llama3Inputs( + tokens=next_tokens_batch, + input_row_offsets_or_attn_mask=attn_mask, + signal_buffers=self.signal_buffers, + kv_cache_inputs=kv_cache_inputs, + ) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> Llama3Inputs: + """Prepare the inputs for the first pass in multistep execution.""" + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_initial_token_inputs( + context_batch, kv_cache_inputs + ) + else: + return self._prepare_padded_initial_token_inputs( + context_batch, kv_cache_inputs + ) + + def _prepare_ragged_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: Llama3Inputs, + ) -> Llama3Inputs: + row_offsets_size = ( + prev_model_inputs.input_row_offsets_or_attn_mask.shape[0] + ) + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + + return Llama3Inputs( + tokens=next_tokens, + input_row_offsets_or_attn_mask=next_row_offsets, + signal_buffers=self.signal_buffers, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> Llama3Inputs: + """Prepare the inputs for the next token in multistep execution. + This should avoid any device synchronization or copy operations. + """ + prev_model_inputs = cast(Llama3Inputs, prev_model_inputs) + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_next_token_inputs( + next_tokens, prev_model_inputs + ) + else: + # TODO(MODELS-407): Consider deleting the padded path entirely. + msg = "multistep unsupported for padded token batches" + raise ValueError(msg) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Llama3, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.num_hidden_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: List[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.num_hidden_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + # Read in weights. + self._weights = self.pipeline_config.load_weights() + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logger.info("Loading serialized model from %s", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = self._build_graph(self._weights) + model = session.load(graph, weights_registry=self.state_dict) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model + + def _unflatten_kv_inputs( + self, kv_inputs_flat: Sequence[TensorValue] + ) -> List[tuple[TensorValue, ...]]: + kv_params = self.get_kv_params(self.pipeline_config) + n_devices = kv_params.n_devices + fetch_types = self.kv_manager.input_symbols()[0] + len_of_kv_tuple_per_dev = len(list(fetch_types)) + kv_caches_per_dev = [ + tuple( + kv_inputs_flat[ + i * len_of_kv_tuple_per_dev : (i + 1) + * len_of_kv_tuple_per_dev + ] + ) + for i in range(n_devices) + ] + return kv_caches_per_dev + + @property + def _attention_multiplier(self) -> float: + """The attention multiplier is a scalar that scales the attention scores. + It is used to control the variance of the attention scores. + + This function is used to get the attention multiplier from the + huggingface config. If the attention multiplier is not set, it will be + calculated as the square root of 1.0 divided by the head dimension. + """ + return getattr( + self.pipeline_config.huggingface_config, + "attention_multiplier", + math.sqrt(1.0 / self.get_kv_params(self.pipeline_config).head_dim), + ) + + def _build_opaque_graph(self, weights: Weights) -> Graph: + device0 = self.pipeline_config.devices[0] + device_ref = DeviceRef(device0.label, device0.id) + tokens_type = TensorType( + DType.int64, shape=["total_seq_len"], device=device_ref + ) + # NOTE: input_row_offsets_len should be batch_size + 1. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"], device=device_ref + ) + + huggingface_config = self.pipeline_config.huggingface_config + + if len(self.pipeline_config.devices) > 1: + kv_cache_args = self.kv_manager.input_symbols() + flattened_kv_types = [ + kv_type for sublist in kv_cache_args for kv_type in sublist + ] + + # Create metadata for signal buffers. + signals = Signals( + devices=( + DeviceRef(d.label, d.id) + for d in self.pipeline_config.devices + ) + ) + + # Distributed Llama still uses GGUF weights, so make sure that + # safetensor weights are converted to GGUF. + if self.pipeline_config.weights_format == WeightsFormat.safetensors: + weights = LlamaSafetensorWeights.from_safetensor_weights( + weights, huggingface_config + ) + with Graph( + getattr(huggingface_config, "model_type", "llama3"), + input_types=[ + tokens_type, + input_row_offsets_type, + *signals.input_types(), + *flattened_kv_types, + ], + ) as graph: + distributed_model = distributed_transformer_opaque( + graph=graph, + pipeline_config=self.pipeline_config, + weights=weights, + max_seq_len=self.calculate_max_seq_len( + self.pipeline_config + ), + kv_params=self.get_kv_params(self.pipeline_config), + norm_method=self.norm_method, + ) + self.state_dict = weights.allocated_weights + tokens, input_row_offsets, *variadic_args = graph.inputs + + # Multi-GPU passes a signal buffer per device: unmarshal those. + signal_buffers = [ + v.buffer + for v in variadic_args[: len(self.pipeline_config.devices)] + ] + + # Unmarshal the remaining arguments, which are for KV cache. + kv_cache = [ + v.tensor + for v in variadic_args[len(self.pipeline_config.devices) :] + ] + + kv_caches_per_dev = self._unflatten_kv_inputs(kv_cache) + + outputs = distributed_model( + tokens.tensor, + signal_buffers, + kv_caches_per_dev, + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + else: + adapter = self.pipeline_config._weight_adapters.get( + self.pipeline_config.weights_format + ) + if adapter: + state_dict = adapter( + dict(weights.items()), + huggingface_config=huggingface_config, + pipeline_config=self.pipeline_config, + ) + else: + state_dict = { + key: value.data() for key, value in weights.items() + } + + if ( + rope_freqs := state_dict.pop("rope_freqs.weight", None) + ) is not None: + rope_scaling = rope_freqs.data + else: + rope_scaling = None + + interleaved_rope_weights = ( + self.pipeline_config.weights_format == WeightsFormat.gguf + and self.pipeline_config.rope_type == RopeType.normal + ) + rms_norm_eps = None + if self.norm_method == "rms_norm": + if huggingface_config.model_type == "exaone": + rms_norm_eps = huggingface_config.layer_norm_epsilon + else: + rms_norm_eps = huggingface_config.rms_norm_eps + + device_refs = [ + DeviceRef(spec.device_type, spec.id) + for spec in self.pipeline_config.device_specs + ] + + # When tie_word_embeddings=True, the embedding weights are shared with + # the output weights. + tie_word_embeddings = ( + getattr(huggingface_config, "tie_word_embeddings", False) + or "lm_head.weight" not in state_dict + ) + embedding_multiplier = getattr( + huggingface_config, "embedding_multiplier", 1.0 + ) + residual_multiplier = getattr( + huggingface_config, "residual_multiplier", 1.0 + ) + nn_model = Llama3( + hidden_size=huggingface_config.hidden_size, + num_attention_heads=huggingface_config.num_attention_heads, + num_key_value_heads=huggingface_config.num_key_value_heads, + num_hidden_layers=huggingface_config.num_hidden_layers, + rope_theta=huggingface_config.rope_theta, + rms_norm_eps=rms_norm_eps, + intermediate_size=huggingface_config.intermediate_size, + interleaved_rope_weights=interleaved_rope_weights, + rope_scaling=rope_scaling, + vocab_size=huggingface_config.vocab_size, + dtype=self.pipeline_config.dtype, + quantization_encoding=self.pipeline_config.graph_quantization_encoding, + quantization_config=self.pipeline_config._quant_config, + all_logits=self.pipeline_config.enable_echo, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + kv_params=self.get_kv_params(self.pipeline_config), + norm_method=self.norm_method, + tie_word_embeddings=tie_word_embeddings, + stacked_mlp="layers.0.mlp.gate_up_proj.weight" in state_dict, + stacked_qkv="layers.0.self_attn.qkv_proj.weight" in state_dict, + logits_postprocessor=self.logits_postprocessor, + attention_multiplier=self._attention_multiplier, + embedding_multiplier=embedding_multiplier, + residual_multiplier=residual_multiplier, + devices=device_refs, + clip_qkv=getattr( + self.pipeline_config.huggingface_config, "clip_qkv", None + ), + ) + nn_model.load_state_dict(state_dict) + self.state_dict = nn_model.state_dict() + with Graph( + "llama3", + input_types=[ + tokens_type, + input_row_offsets_type, + *self.kv_manager.input_symbols()[0], + ], + ) as graph: + tokens, input_row_offsets, *kv_cache_inputs = graph.inputs + outputs = nn_model( + tokens.tensor, + [inp.tensor for inp in kv_cache_inputs], + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + + def _build_graph(self, weights: Weights) -> Graph: + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._build_opaque_graph(weights) + + tokens_type = TensorType(DType.int64, shape=["batch_size", "seq_len"]) + attn_mask_type = TensorType( + DType.float32, shape=["batch_size", "seq_len", "post_seq_len"] + ) + + if len(self.pipeline_config.devices) > 1: + raise ValueError( + "Naive mode does not support distributed execution" + ) + + kv_inputs = self.kv_manager.input_symbols()[0] + + interleaved_rope_weights = ( + self.pipeline_config.weights_format == WeightsFormat.gguf + and self.pipeline_config.rope_type == RopeType.normal + ) + adapter = self.pipeline_config._weight_adapters.get( + self.pipeline_config.weights_format + ) + huggingface_config = self.pipeline_config.huggingface_config + if adapter: + state_dict = adapter( + dict(weights.items()), + huggingface_config=huggingface_config, + pipeline_config=self.pipeline_config, + ) + else: + state_dict = {key: value.data() for key, value in weights.items()} + if ( + rope_freqs := state_dict.pop("rope_freqs.weight", None) + ) is not None: + rope_scaling = rope_freqs.data + else: + rope_scaling = None + + rms_norm_eps = None + if self.norm_method == "rms_norm": + if huggingface_config.model_type == "exaone": + rms_norm_eps = huggingface_config.layer_norm_epsilon + else: + rms_norm_eps = huggingface_config.rms_norm_eps + + device_refs = [ + DeviceRef(spec.device_type, spec.id) + for spec in self.pipeline_config.device_specs + ] + + # When tie_word_embeddings=True, the embedding weights are shared with + # the output weights. + tie_word_embeddings = ( + getattr(huggingface_config, "tie_word_embeddings", False) + or "lm_head.weight" not in state_dict + ) + embedding_multiplier = getattr( + huggingface_config, "embedding_multiplier", 1.0 + ) + residual_multiplier = getattr( + huggingface_config, "residual_multiplier", 1.0 + ) + nn_model = NaiveLlama3( + hidden_size=huggingface_config.hidden_size, + num_attention_heads=huggingface_config.num_attention_heads, + num_key_value_heads=huggingface_config.num_key_value_heads, + num_hidden_layers=huggingface_config.num_hidden_layers, + rope_theta=huggingface_config.rope_theta, + rms_norm_eps=rms_norm_eps, + intermediate_size=huggingface_config.intermediate_size, + interleaved_rope_weights=interleaved_rope_weights, + rope_scaling=rope_scaling, + vocab_size=huggingface_config.vocab_size, + dtype=self.pipeline_config.dtype, + quantization_encoding=self.pipeline_config.graph_quantization_encoding, + quantization_config=self.pipeline_config._quant_config, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + kv_params=self.get_kv_params(self.pipeline_config), + norm_method=self.norm_method, + tie_word_embeddings=tie_word_embeddings, + stacked_mlp="layers.0.mlp.gate_up_proj.weight" in state_dict, + stacked_qkv="layers.0.self_attn.qkv_proj.weight" in state_dict, + logits_postprocessor=self.logits_postprocessor, + attention_multiplier=self._attention_multiplier, + embedding_multiplier=embedding_multiplier, + residual_multiplier=residual_multiplier, + devices=device_refs, + clip_qkv=getattr( + self.pipeline_config.huggingface_config, "clip_qkv", None + ), + ) + + # Load weights. We allow the weight types to be overriden due to + # multiple quantization enodings in GGUF checkpoints. + nn_model.load_state_dict( + state_dict, override_quantization_encoding=True + ) + self.state_dict = nn_model.state_dict() + + with Graph( + getattr(huggingface_config, "model_type", "llama3"), + input_types=[ + tokens_type, + attn_mask_type, + *kv_inputs, + ], + ) as graph: + tokens, attention_mask, k_cache, v_cache, start_pos, _ = ( + graph.inputs + ) + mask_dtype = ( + self.pipeline_config.dtype + if self.pipeline_config.quantization_encoding + in [ + SupportedEncoding.float32, + SupportedEncoding.bfloat16, + ] + else ( + DType.float32 + if self.pipeline_config.devices[0].label == "cpu" + else DType.bfloat16 + ) + ) + logits = nn_model( + tokens.tensor, + attention_mask.tensor.cast(mask_dtype), + k_cache.buffer, + v_cache.buffer, + start_pos.tensor, + )[0] + + if self.pipeline_config.enable_echo: + graph.output(logits[:, -1], logits) + else: + graph.output(logits[:, -1]) + + return graph + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + if any(echo for echo in batch_echo): + if model_outputs.logits is None: + logger.warning( + "Could not get logprobs with echo because the full logits" + f" were not returned by {self.pipeline_config.model_path}" + " model. Please ensure that this model is started with " + "`--enable-echo`." + ) + assert not self.pipeline_config.enable_echo, ( + "Echo was enabled but logits were not returned." + ) + return None + logits = model_outputs.logits.to_numpy() + + llama3_inputs = cast(Llama3Inputs, model_inputs) + next_token_logits = cast( + Tensor, model_outputs.next_token_logits + ).to_numpy() + + sampled_tokens = next_tokens.to_numpy() + if self.pipeline_config.cache_strategy.uses_opaque(): + # Handle the ragged inputs + tokens = cast(Tensor, llama3_inputs.tokens).to_numpy() + input_row_offsets = cast( + Tensor, llama3_inputs.input_row_offsets + ).to_numpy() + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + start_offset = input_row_offsets[batch_index] + end_offset = input_row_offsets[batch_index + 1] + batch_logits = logits[start_offset:end_offset] + samples = np.concatenate( + ( + tokens[start_offset + 1 : end_offset], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1 + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + else: + # Handle batched inputs. Llama pads them to the right so the seq + # lengths can be computed by finding the first 0 token. + tokens = cast(np.ndarray, llama3_inputs.tokens) + seq_lens = np.sum(tokens > 0, axis=1) + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + seq_len = seq_lens[batch_index] + padded_tokens = tokens[batch_index] + + batch_logits = logits[batch_index, :seq_len, :] + samples = np.concatenate( + ( + padded_tokens[1:seq_len], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1, : + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + return compute_log_probabilities( + _get_logits_and_samples, batch_top_n, batch_echo + ) + + +class Llama3Model(LlamaModelBase): + """Llama 3 pipeline model implementation.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] = "rms_norm" + """Normalization layer.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) diff --git a/src/max/pipelines/architectures/llama3/naive_llama3.py b/src/max/pipelines/architectures/llama3/naive_llama3.py new file mode 100644 index 0000000000..d171f926cb --- /dev/null +++ b/src/max/pipelines/architectures/llama3/naive_llama3.py @@ -0,0 +1,319 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Builds a Llama3 model that uses naive KV-caching.""" + +from __future__ import annotations + +import functools +from collections.abc import Sequence +from typing import Callable, Literal, Optional, Union + +import numpy as np +from max.dtype import DType +from max.graph import DeviceRef, TensorValue, ops +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.pipelines.kv_cache import KVCacheParams +from max.pipelines.nn import ( + MLPV2, + EmbeddingV2, + GPTQLinearV2, + LayerV2, + LinearV2, + NaiveAttentionWithRope, + NaiveTransformer, + NaiveTransformerBlock, + OptimizedRotaryEmbedding, + RMSNormV2, + RotaryEmbedding, +) + + +class ConstantLayerNorm(LayerV2): + """Layer normalization block with constant gamma and beta values.""" + + gamma: np.ndarray + beta: np.ndarray + eps: float = 1e-5 + + def __init__(self, dims, eps: float = 1e-5): + super().__init__() + self.gamma = np.ones(dims) + self.beta = np.zeros(dims) + self.eps = eps + + def __call__(self, input: TensorValue): + gamma = ops.constant(self.gamma, DType.float32) + beta = ops.constant(self.beta, DType.float32) + return ops.cast( + ops.layer_norm( + ops.cast(input, DType.float32), + gamma=gamma, + beta=beta, + epsilon=self.eps, + ), + input.dtype, + ) + + +class NaiveLlama3(NaiveTransformer): + def __init__( + self, + *, + hidden_size: int, + num_attention_heads: int, + num_key_value_heads: int, + num_hidden_layers: int, + rope_theta: float, + max_seq_len: int, + rms_norm_eps: Optional[float], + intermediate_size: int, + interleaved_rope_weights: bool, + rope_scaling: Optional[np.ndarray], + vocab_size: int, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + quantization_config: Optional[QuantizationConfig], + kv_params: KVCacheParams, + norm_method: Literal["rms_norm"] | Literal["layer_norm"], + tie_word_embeddings: bool, + stacked_mlp: bool, + stacked_qkv: bool, + logits_postprocessor: Callable[[TensorValue], TensorValue] | None, + attention_multiplier: float, + embedding_multiplier: float, + residual_multiplier: float, + devices: list[DeviceRef], + clip_qkv: float | None, + ): + if stacked_qkv: + raise ValueError( + "Stacked QKV is not supported with naive caching strategy." + ) + rope = RotaryEmbedding( + dim=hidden_size, + n_heads=num_attention_heads, + theta=rope_theta, + max_seq_len=max_seq_len, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + + create_norm: Callable[..., LayerV2] + if norm_method == "rms_norm": + if rms_norm_eps is None: + raise ValueError( + "rms_norm_eps cannot be None for model that uses RMSNorm." + ) + create_norm = functools.partial( + RMSNormV2, hidden_size, rms_norm_eps + ) + else: + create_norm = functools.partial(ConstantLayerNorm, hidden_size) + + linear_cls: Callable[..., LinearV2] + if quantization_config: + linear_cls = functools.partial( + GPTQLinearV2, quantization_config=quantization_config + ) + else: + linear_cls = LinearV2 + + mlp_cls = StackedMLP if stacked_mlp else Llama3MLP + layers = [ + NaiveTransformerBlock( + attention=NaiveLLama3Attention( + kv_params, + hidden_size, + num_attention_heads, + num_key_value_heads, + rope, + dtype, + quantization_encoding, + linear_cls, + scale=attention_multiplier, + device=devices[0], + clip_qkv=clip_qkv, + ), + mlp=mlp_cls( + dtype, + quantization_encoding, + hidden_size, + intermediate_size, + linear_cls, + devices=devices, + ), + attention_norm=create_norm(), + mlp_norm=create_norm(), + residual_multiplier=residual_multiplier, + ) + for i in range(num_hidden_layers) + ] + + embedding_layer = EmbeddingV2( + vocab_size, + hidden_size, + dtype, + devices[0], + quantization_encoding=quantization_encoding, + ) + + output = LinearV2( + hidden_size, + vocab_size, + dtype, + devices[0], + quantization_encoding=quantization_encoding, + ) + if tie_word_embeddings: + output.set_shared_weight("weight", embedding_layer.weight) + + super().__init__( + dim=hidden_size, + n_heads=num_attention_heads, + layers=layers, + norm=create_norm(), + output=output, + theta=rope_theta, + embedding=embedding_layer, + embedding_multiplier=embedding_multiplier, + logits_postprocessor=logits_postprocessor, + ) + + +class NaiveLLama3Attention(NaiveAttentionWithRope): + def __init__( + self, + kv_params: KVCacheParams, + hidden_size: int, + num_attention_heads: int, + num_key_value_heads: int, + rope: Union[OptimizedRotaryEmbedding, RotaryEmbedding], + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + linear_cls: Callable[..., LinearV2], + scale: float | None, + device: DeviceRef, + clip_qkv: float | None, + ): + kv_weight_dim = ( + hidden_size // num_attention_heads + ) * num_key_value_heads + + super().__init__( + n_heads=num_attention_heads, + kv_params=kv_params, + dim=hidden_size, + wk=linear_cls( + in_dim=hidden_size, + out_dim=kv_weight_dim, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + clip_weight=clip_qkv, + ), + wv=linear_cls( + in_dim=hidden_size, + out_dim=kv_weight_dim, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + clip_weight=clip_qkv, + ), + wq=linear_cls( + in_dim=hidden_size, + out_dim=hidden_size, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + clip_weight=clip_qkv, + ), + wo=linear_cls( + in_dim=hidden_size, + out_dim=hidden_size, + dtype=dtype, + device=device, + quantization_encoding=quantization_encoding, + ), + rope=rope, + scale=scale, + ) + + +class Llama3MLP(MLPV2): + def __init__( + self, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + hidden_dim: int, + feed_forward_length: int, + linear_cls: Callable[..., LinearV2], + devices: Sequence[DeviceRef] = (), + ): + super().__init__( + gate_proj=linear_cls( + in_dim=hidden_dim, + out_dim=feed_forward_length, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ), + down_proj=linear_cls( + in_dim=feed_forward_length, + out_dim=hidden_dim, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ), + up_proj=linear_cls( + in_dim=hidden_dim, + out_dim=feed_forward_length, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ), + ) + + +class StackedMLP(LayerV2): + def __init__( + self, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + hidden_dim: int, + feed_forward_length: int, + linear_cls: Callable[..., LinearV2], + devices: Sequence[DeviceRef] = (), + ): + super().__init__() + self.gate_up_proj = linear_cls( + in_dim=hidden_dim, + out_dim=feed_forward_length * 2, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ) + self.down_proj = linear_cls( + in_dim=feed_forward_length, + out_dim=hidden_dim, + dtype=dtype, + device=devices[0] if devices else None, + quantization_encoding=quantization_encoding, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + up_states = self.gate_up_proj(x) + + gate = up_states[:, : up_states.shape.static_dims[0] // 2] + up_states = up_states[:, up_states.shape.static_dims[0] // 2 :] + + return self.down_proj(ops.silu(gate) * up_states) diff --git a/src/max/pipelines/architectures/llama3/weight_adapters.py b/src/max/pipelines/architectures/llama3/weight_adapters.py new file mode 100644 index 0000000000..fb3831322a --- /dev/null +++ b/src/max/pipelines/architectures/llama3/weight_adapters.py @@ -0,0 +1,289 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import math +from functools import cached_property +from os import PathLike +from typing import Sequence + +import numpy as np +import torch +from max.dtype import DType +from max.graph.weights import SafetensorWeights, WeightData, Weights +from max.graph.weights._torch_dtype_map import ( + modular_to_torch_type, + torch_to_modular_type, +) +from max.pipelines import PipelineConfig +from transformers import LlamaConfig + + +def _compute_safetensor_rope_scaling( + huggingface_config: LlamaConfig, +) -> np.ndarray | None: + # Unlike the `transformers` library's Llama model, MAX Llama expects the + # rope scaling value to be in the state dict (this is similar to GGUF). + if rope_scaling := getattr(huggingface_config, "rope_scaling", None): + if rope_scaling.get("rope_type", "").lower() == "llama3": + return _compute_rope_scaling( + rope_scaling, huggingface_config + ).numpy() + return None + + +# Maps from Safetensor to MAX weight names. +LLAMA_SAFETENSOR_MAPPING = { + "model.": "", # Removes the "model" prefix. + "g_idx": "perm_idx", # Specific to Llama GPT-Q weights. +} + + +def convert_safetensor_state_dict( + state_dict: dict[str, Weights], + huggingface_config: LlamaConfig, + pipeline_config: PipelineConfig, + **unused_kwargs, +) -> dict[str, WeightData]: + new_state_dict: dict[str, WeightData] = {} + # Map the weight names. + for safetensor_name, value in state_dict.items(): + max_name = safetensor_name + for before, after in LLAMA_SAFETENSOR_MAPPING.items(): + max_name = max_name.replace(before, after) + new_state_dict[max_name] = value.data() + # Add rope scaling to the state dict. + rope_scaling = _compute_safetensor_rope_scaling(huggingface_config) + if rope_scaling is not None: + new_state_dict["rope_freqs.weight"] = WeightData.from_numpy( + rope_scaling, "rope_freqs.weight" + ) + if pipeline_config._quant_config: + # hack: argsort the perm_idx array + for key, weight_data in new_state_dict.items(): + if key.endswith("perm_idx"): + new_state_dict[key] = WeightData.from_numpy( + np.argsort(weight_data.data).astype(np.int32), key + ) + return new_state_dict + + +# Maps from GGUF to MAX weight names. +LLAMA_GGUF_MAPPING = { + "token_embd": "embed_tokens", + "blk": "layers", + "ffn_up": "mlp.up_proj", + "ffn_down": "mlp.down_proj", + "ffn_gate": "mlp.gate_proj", + "ffn_norm": "post_attention_layernorm", + "attn_norm": "input_layernorm", + "attn_q": "self_attn.q_proj", + "attn_v": "self_attn.v_proj", + "attn_k": "self_attn.k_proj", + "attn_output": "self_attn.o_proj", + "output.weight": "lm_head.weight", + "output_norm": "norm", +} + + +def convert_gguf_state_dict( + state_dict: dict[str, Weights], **unused_kwargs +) -> dict[str, WeightData]: + new_state_dict: dict[str, WeightData] = {} + # Map the weight names. + for gguf_name, value in state_dict.items(): + max_name = gguf_name + for before, after in LLAMA_GGUF_MAPPING.items(): + max_name = max_name.replace(before, after) + new_state_dict[max_name] = value.data() + return new_state_dict + + +def _compute_rope_scaling( + rope_scaling, huggingface_config: LlamaConfig +) -> torch.Tensor: + # From llama.cpp's HF to GGUF conversion script: + # https://github.com/ggerganov/llama.cpp/blob/40c6d79fb52f995f47507fedfeaae2ac05d9b35c/convert_hf_to_gguf.py#L1627-L1654 + base = huggingface_config.rope_theta + dim = huggingface_config.head_dim + freqs = 1.0 / (base ** (torch.arange(0, dim, 2, dtype=torch.float32) / dim)) + + factor = rope_scaling.get("factor", 8.0) + low_freq_factor = rope_scaling.get("low_freq_factor", 1.0) + high_freq_factor = rope_scaling.get("high_freq_factor", 4.0) + old_context_len = rope_scaling.get("original_max_position_embeddings", 8192) + + low_freq_wavelen = old_context_len / low_freq_factor + high_freq_wavelen = old_context_len / high_freq_factor + assert low_freq_wavelen != high_freq_wavelen + + rope_factors = [] + for freq in freqs: + wavelen = 2 * math.pi / freq + if wavelen < high_freq_wavelen: + rope_factors.append(1) + elif wavelen > low_freq_wavelen: + rope_factors.append(factor) + else: + smooth = (old_context_len / wavelen - low_freq_factor) / ( + high_freq_factor - low_freq_factor + ) + rope_factors.append(1 / ((1 - smooth) / factor + smooth)) + return torch.tensor(rope_factors, dtype=torch.float32) + + +# Required for Multi-GPU LLama3 until it is migrated to new Layers API + +# Map from GGUF tensor names to Safetensor names. +# https://github.com/huggingface/transformers/blob/7bbc62474391aff64f63fcc064c975752d1fa4de/src/transformers/integrations/ggml.py#L36 +LLAMA_GGUF_TENSOR_MAPPING = { + "token_embd": "model.embed_tokens", + "blk": "model.layers", + "ffn_up": "mlp.up_proj", + "ffn_down": "mlp.down_proj", + "ffn_gate": "mlp.gate_proj", + "ffn_norm": "post_attention_layernorm", + "attn_norm": "input_layernorm", + "attn_q": "self_attn.q_proj", + "attn_v": "self_attn.v_proj", + "attn_k": "self_attn.k_proj", + "attn_output": "self_attn.o_proj", + "output.weight": "lm_head.weight", + "output_norm": "model.norm", +} + + +class LlamaSafetensorWeights(SafetensorWeights): + """Loads Safetensor weights with GGUF names. + + Does the following when loading weights: + (1) converts Safetensor weight names to and from GGUF names. For example, + the GGUF weight "blk.{i}.attn_q.weight" is instead saved as + "model.layers.{i}.self_attn.q_proj.weight" in Safetensor. + (2) Computes the rope_freqs.weight using the HuggingFace config + (3) Transposes the q_proj and k_proj weights. + + """ + + def __init__( + self, + filepaths: Sequence[PathLike], + huggingface_config: LlamaConfig, + has_rope_scaling: bool, + rope_freqs_tensor: torch.Tensor | None, + **kwargs, + ): + super().__init__(filepaths, **kwargs) + self._gguf_name_map = LLAMA_GGUF_TENSOR_MAPPING + self._huggingface_config = huggingface_config + self._has_rope_scaling = has_rope_scaling + self._rope_freqs_tensor = rope_freqs_tensor + + @classmethod + def from_safetensor_weights( + cls, weights: Weights, huggingface_config: LlamaConfig + ): + assert isinstance(weights, SafetensorWeights) + has_rope_scaling = False + rope_freqs_tensor = None + if rope_scaling := getattr(huggingface_config, "rope_scaling", None): + if rope_scaling.get("rope_type", "").lower() == "llama3": + has_rope_scaling = True + rope_freqs_tensor = _compute_rope_scaling( + rope_scaling, huggingface_config + ) + return cls( + weights._filepaths, + huggingface_config=huggingface_config, + has_rope_scaling=has_rope_scaling, + rope_freqs_tensor=rope_freqs_tensor, + tensors=weights._tensors, + tensors_to_file_idx=weights._tensors_to_file_idx, + prefix="", + allocated=weights._allocated, + _st_weight_map=weights._st_weight_map, + ) + + def items(self): + """Iterate through all allocable weights that start with the prefix.""" + # `self._tensor` contains Safetensor names, but the Llama pipeline + # expects GGUF names so this function should return GGUF names. + for safetensor_name in self._tensors: + if safetensor_name.startswith(self.name): + gguf_name = safetensor_name + + # The _gguf_name_map maps gguf -> safetensor names. + # We want the reverse transformation from safetensor -> gguf. + for after, before in self._gguf_name_map.items(): + gguf_name = gguf_name.replace(before, after) + yield ( + gguf_name, + LlamaSafetensorWeights( + self._filepaths, + huggingface_config=self._huggingface_config, + has_rope_scaling=self._has_rope_scaling, + rope_freqs_tensor=self._rope_freqs_tensor, + tensors=self._tensors, + tensors_to_file_idx=self._tensors_to_file_idx, + prefix=gguf_name, + allocated=self._allocated, + _st_weight_map=self._st_weight_map, + ), + ) + + @cached_property + def name(self) -> str: + """The current weight name or prefix.""" + # Convert the prefix, which follows the GGUF naming pattern, to + # Safetensor weight name. + name = self._prefix + for before, after in self._gguf_name_map.items(): + name = name.replace(before, after) + return name + + def __getattr__(self, attr) -> LlamaSafetensorWeights: + if self._prefix: + full_path = f"{self._prefix}.{attr}" + else: + full_path = str(attr) + return LlamaSafetensorWeights( + self._filepaths, + huggingface_config=self._huggingface_config, + has_rope_scaling=self._has_rope_scaling, + rope_freqs_tensor=self._rope_freqs_tensor, + tensors=self._tensors, + tensors_to_file_idx=self._tensors_to_file_idx, + prefix=full_path, + allocated=self._allocated, + _st_weight_map=self._st_weight_map, + ) + + def exists(self) -> bool: + return self.name in self._tensors_to_file_idx or ( + self._has_rope_scaling and self.name == "rope_freqs.weight" + ) + + def _load_tensor(self, dtype: DType | None = None): + if self._has_rope_scaling and self.name == "rope_freqs.weight": + tensor = self._rope_freqs_tensor + assert isinstance(tensor, torch.Tensor) + if ( + dtype is not None + and torch_to_modular_type(tensor.dtype) != dtype + ): + tensor = tensor.to(modular_to_torch_type(dtype)) + return tensor + tensor = super()._load_tensor(dtype) + + return tensor diff --git a/src/max/pipelines/architectures/llama_vision/README.md b/src/max/pipelines/architectures/llama_vision/README.md new file mode 100644 index 0000000000..d0656223e0 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/README.md @@ -0,0 +1,138 @@ +# Llama 3.2 Vision + +**Language:** Python + +**API**: MAX Graph + +This pipeline provides optimized support for the +`MllamaForConditionalGeneration` family of multimodal models, as exemplified +by the Llama 3.2 Vision multimodal text generation model. The model itself has +been constructed in Python using the +[MAX Graph API](https://docs.modular.com/max/graph/). + +The MAX Graph API provides an accessible interface to the construction of +flexible accelerated compute graphs, which are then optimized by the MAX +Engine's advanced graph compiler. This pipeline showcases how a multimodal +model can be fully defined using Python and MAX Graphs and then compiled for +optimal inference performance via the MAX Engine. + +> [!NOTE] +> This pipeline is under active development, and while many layers have been +> implemented, the entire pipeline is not fully functional at present. + +## Model + +[Llama 3.2 Vision](https://ai.meta.com/blog/llama-3-2-connect-2024-vision-edge-mobile-devices/) +is an open source multimodal model released by Meta. It handles both text and +image input, and allows for text generation based on those multimodal inputs. +This implementation is based on +[the version located on Hugging Face](https://huggingface.co/blog/llama32), and +follows its convention of only attending to a single image at a time. + +Note that the Llama 3.2 1B and 3B text-only models use the `LlamaForCausalLM` +architecture, which is covered in [our Llama 3.x pipeline](../../llama3/). + +The default settings for this pipeline use the 11B set of pretrained weights in +the `bfloat16` encoding. + +## Usage + +The easiest way to try out this pipeline is with our Magic command-line tool. + +1. Install Magic on macOS and Ubuntu with this command: + + ```shell + curl -ssL https://magic.modular.com | bash + ``` + + Then run the source command that's printed in your terminal. + + To see the available commands, you can run `magic --help`. + [Learn more about Magic here](https://docs.modular.com/magic). + +2. Clone the MAX examples repository: + + If you don't already have a local clone of this repository, create one via: + + ```shell + git clone https://github.com/modular/max.git + ``` + + The following instructions assume that you're present within this pipeline's + directory, and you can change to it after cloning: + + ```shell + cd max/src/max/pipelines + ``` + +3. Host a multimodal chat completion endpoint via MAX Serve. + + MAX Serve provides functionality to host performant OpenAI compatible + endpoints using the FastAPI framework. + + You can configure the pipeline to be hosted by using the `serve` command. + Weights hosted on Hugging Face for any compatible + `MllamaForConditionalGeneration` model can be used with this optimized + architecture. For example: + + ```shell + magic run serve --model-path meta-llama/Llama-3.2-11B-Vision-Instruct + ``` + + A request can be submitted via a cURL command. + + ```shell + curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "meta-llama/Llama-3.2-11B-Vision-Instruct", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": [ + {"type": "text", "text": "What is in this image?"}, + {"type": "image_url", "image_url": {"url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"}} + ]} + ] + }' + ``` + +## Options + +The following command-line options are available to customize operation of the +pipeline: + +- `--model-path`: Specify the repository ID of a Hugging Face model + repository to use. This is used to load tokenizers, architectures and model + weights. +- `--force-download`: Specify whether to force a download of configuration + files and weights even if they already exist in the local cache. Set this + if you want to ensure you have the correct version of the model. +- `--max-batch-size`: Specifies the maximum batch size to be used. + Default is 1. +- `--max-ce-batch-size`: Set the maximum cache size reserved for a single + context encoding batch. The effective limit will be the lesser of this value + and `max-cache-batch-size`. + Default is 32. +- `--max-length`: Controls the maximum length of the text sequence (includes the + input tokens). Defaults to huggingface model config's max sequence length. +- `--max-new-tokens`: The maximum number of new tokens to generate. If a -1 + value is provided, the model will continue to generate tokens for the entire + context length. (Default value: -1) +- `--quantization-encoding`: The encoding to use for a datatype that can be + quantized to a low bits per weight format. + Valid values: `q4_0`, `q4_k`, `q6_k`, `bfloat16`, `float32`. + (Default value: `bfloat16`). +- `--save-to-serialized-model-path`: If specified, writes the serialized model + to this path. +- `--serialized-model-path`: If specified, tries to load a serialized model + from this path. +- `--top-k`: Limits the sampling to the K most probable tokens. Default is 1. +- `--trust-remote-code`: Indicate whether to allow custom modeling files from + Hugging Face repositories. Set this to true with caution, as it may + introduce security risks. +- `--weight-path`: Overrides the default URL, and allows for an + already-downloaded pretrained weight file to be used with the model. +- `--devices`: Specifies the device(s) to use for the model. This can optionally + be "cpu", "gpu", or a comma-separated list of GPU ID(s) like "gpu-0,gpu-1". + Defaults to the first available GPU, or "cpu" if no GPUs are available. diff --git a/src/max/pipelines/architectures/llama_vision/__init__.py b/src/max/pipelines/architectures/llama_vision/__init__.py new file mode 100644 index 0000000000..10bbcab277 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import llama_vision_arch + +__all__ = ["llama_vision_arch"] diff --git a/src/max/pipelines/architectures/llama_vision/arch.py b/src/max/pipelines/architectures/llama_vision/arch.py new file mode 100644 index 0000000000..a1ac78137d --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/arch.py @@ -0,0 +1,36 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextAndVisionTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .llama_vision import LlamaVision + +llama_vision_arch = SupportedArchitecture( + name="MllamaForConditionalGeneration", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["meta-llama/Llama-3.2-11B-Vision-Instruct"], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.bfloat16: [KVCacheStrategy.CONTINUOUS] + }, + pipeline_model=LlamaVision, + tokenizer=TextAndVisionTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/llama_vision/attention.py b/src/max/pipelines/architectures/llama_vision/attention.py new file mode 100644 index 0000000000..7129da3b7f --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/attention.py @@ -0,0 +1,107 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An attention layer used in Llama 3.2 vision pipeline.""" + +import math +from dataclasses import dataclass + +from max.graph import TensorValue, ops +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import Layer + + +@dataclass +class Attention(Layer): + n_heads: int + head_dim: int + + wq: Linear + wk: Linear + wv: Linear + wo: Linear + + def attention( + self, + xq: TensorValue, + xk: TensorValue, + xv: TensorValue, + attn_mask: TensorValue, + ) -> TensorValue: + # Broadcast the attention mask across heads. + # Do so in the graph so that the broadcast can be fused into downstream + # ops. + batch, _, seq_len, post_seq_len = attn_mask.shape + attn_mask = attn_mask.broadcast_to( + ( + batch, + self.n_heads, + seq_len, + post_seq_len, + ) + ) + + scale = math.sqrt(1.0 / self.head_dim) + scores = xq @ ops.transpose(xk, -2, -1) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + scores = ops.softmax(scores * scale + attn_mask) + + return scores @ xv + + def __call__( + self, x: TensorValue, attention_mask: TensorValue + ) -> TensorValue: + """Computes attention on x, reusing the KV cache. + + Args: + x: Activations with shape (batch, seq_len, dim). + Returns the result of multi-headed self attention on the input. + """ + batch, seq_len = x.shape[0], x.shape[1] + # matmul weights + xq = self.wq(x) + xk = self.wk(x) + xv = self.wv(x) + + xq = ops.reshape(xq, [batch, seq_len, self.n_heads, self.head_dim]) + + xk = ops.reshape( + xk, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + xv = ops.reshape( + xv, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + + xq = xq.transpose(1, 2) + xk = xk.transpose(1, 2) + xv = xv.transpose(1, 2) + + # (1, 16, 4128, 80) -> (1, 4128, 16, 80) + attn_out = self.attention(xq, xk, xv, attention_mask).transpose(1, 2) + output = attn_out.reshape( + [batch, seq_len, self.n_heads * self.head_dim] + ) # (1, 4128, 16 * 80) + return self.wo(output) diff --git a/src/max/pipelines/architectures/llama_vision/cross_attention_decoder.py b/src/max/pipelines/architectures/llama_vision/cross_attention_decoder.py new file mode 100644 index 0000000000..d4635f2a3c --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/cross_attention_decoder.py @@ -0,0 +1,173 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Language Model cross attention decoder.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, Weight, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, +) +from max.pipelines.nn import MLP, RMSNorm +from max.pipelines.nn.kernels import ( + MHAMaskVariant, + cross_attention_ragged, + matmul_kv_cache_ragged, + rms_norm_key_cache, +) +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.linear import Linear + + +@dataclass +class CrossSdpaAttention(Layer): + """Cross attention layer using SDPA (Scaled Dot Product Attention).""" + + n_heads: int + """The number of attention heads.""" + + kv_params: KVCacheParams + """KV Cache Params, including the number of kv heads, the head dim, and data type.""" + + layer_idx: int + """Index into the cross attention layers' KV cache.""" + + q_proj: Linear + """A linear layer for the query projection.""" + + wk: Weight + """The k weight vector. Combines with wv to form a Linear.""" + + wv: Weight + """The v weight vector. Combines with wk to form a Linear.""" + + o_proj: Linear + """A linear layer for the output projection.""" + + q_norm: RMSNorm + """Layer normalization.""" + + k_norm: RMSNorm + """Layer normalization.""" + + def __call__( + self, + hidden_states: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + ) -> TensorValue: + """Computes attention on hidden (query) and cross (key and value). + + Returns: + Attended hidden activation. + """ + wkv = ops.concat((self.wk, self.wv), axis=0) + + query_states = self.q_proj(hidden_states) + query_states = query_states.reshape( + [ + -1, + self.n_heads, + self.kv_params.head_dim, + ] + ) + query_states = self.q_norm(query_states) + + matmul_kv_cache_ragged( + kv_params=self.kv_params, + # Here, hidden_states correspond to cross_attention_states. + hidden_states=cross_attention_states, + layer_idx=self.layer_idx, + input_row_offsets=cross_input_row_offsets, + weight=wkv, + kv_collection=kv_collection, + ) + rms_norm_key_cache( + self.kv_params, + kv_collection, + gamma=ops.cast(self.k_norm.weight, hidden_states.dtype), + epsilon=self.k_norm.eps, + layer_idx=self.layer_idx, + # Use the total sequence length of the cross attention states. + total_seq_len=cross_attention_states.shape[0], + input_row_offsets=cross_input_row_offsets, + ) + + # Calculate Flash Attention. + attn_out = cross_attention_ragged( + self.kv_params, + input=query_states, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + input_row_offsets=hidden_input_row_offsets, + # Use the null mask to attend to all vision tokens. + mask_variant=MHAMaskVariant.NULL_MASK, + kv_input_row_offsets=cross_input_row_offsets, + q_max_seq_len=hidden_max_seq_len, + scale=math.sqrt(1.0 / self.kv_params.head_dim), + ) + + # Reshape back to (hidden total seq len, hidden size). + attn_out = ops.reshape(attn_out, shape=[hidden_states.shape[0], -1]) + + return self.o_proj(attn_out) + + +@dataclass +class CrossAttentionDecoderLayer(Layer): + """Cross-attention transformer block with tanh-gated attention and feedforward.""" + + cross_attn: CrossSdpaAttention + input_layernorm: RMSNorm + cross_attn_attn_gate: Weight + mlp: MLP + post_attention_layernorm: RMSNorm + cross_attn_mlp_gate: Weight + + def __call__( + self, + hidden_states: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + ) -> TensorValue: + residual = hidden_states + hidden_states = self.input_layernorm(hidden_states) + + hidden_states = self.cross_attn( + hidden_states, + hidden_input_row_offsets, + hidden_max_seq_len, + cross_attention_states, + cross_input_row_offsets, + kv_collection, + ) + hidden_states = ( + residual + ops.tanh(self.cross_attn_attn_gate) * hidden_states + ) + + residual = hidden_states + hidden_states = self.post_attention_layernorm(hidden_states) + hidden_states = self.mlp(hidden_states) + return residual + ops.tanh(self.cross_attn_mlp_gate) * hidden_states diff --git a/src/max/pipelines/architectures/llama_vision/encoder.py b/src/max/pipelines/architectures/llama_vision/encoder.py new file mode 100644 index 0000000000..604057c531 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/encoder.py @@ -0,0 +1,105 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Encoder.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn import LayerNorm +from max.pipelines.nn.layer import Layer + +from .attention import Attention +from .mlp import MLP + + +@dataclass +class VisionEncoderLayer(Layer): + """ + This class implements a layer within Llama 3.2 vision transformer encoder. + """ + + mlp: MLP + input_layernorm: LayerNorm + post_attention_layernorm: LayerNorm + self_attn: Attention + is_gated: bool = False + gate_attn: TensorValueLike | None = None + gate_ffn: TensorValueLike | None = None + + def __call__( + self, hidden_state: TensorValue, attention_mask: TensorValue + ) -> TensorValue: + # Self Attention. + residual = hidden_state + hidden_state = self.input_layernorm(hidden_state) + + hidden_state = self.self_attn( + x=hidden_state, + attention_mask=attention_mask, + ) + + if self.is_gated: + hidden_state = ops.tanh(self.gate_attn) * hidden_state + hidden_state = residual + hidden_state + + # Feed forward. + residual = hidden_state + hidden_state = self.post_attention_layernorm(hidden_state) + hidden_state = self.mlp(hidden_state) + + # Gating criteria. + if self.is_gated: + hidden_state = ops.tanh(self.gate_ffn) * hidden_state + return residual + hidden_state + + +@dataclass +class VisionEncoder(Layer): + """ + Transformer encoder consisting of # of hidden self attention + layers. Each layer is a [`VisionEncoderLayer`]. + """ + + layers: list[VisionEncoderLayer] + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + output_hidden_states: bool, + ) -> tuple[TensorValue, tuple[TensorValue] | None]: + r""" + Args: + hidden_states (Tensor of shape `(batch_size, sequence_length, hidden_size)`): + attention_mask (Tensor of shape `(batch_size, sequence_length)`): + Mask to avoid performing attention on padding token indices. Mask values selected in `[0, 1]`: + + - 1 for tokens that are **not masked**, + - 0 for tokens that are **masked**. + output_hidden_states (`bool`, *optional*): + Whether or not to return the hidden states of all layers. See `hidden_states` under returned tensors + for more detail. + """ + encoder_states: tuple | None = () if output_hidden_states else None + for encoder_layer in self.layers: + if encoder_states is not None: + encoder_states = encoder_states + (hidden_states,) + hidden_states = encoder_layer(hidden_states, attention_mask) + + if encoder_states is not None: + encoder_states = encoder_states + (hidden_states,) + + return hidden_states, encoder_states diff --git a/src/max/pipelines/architectures/llama_vision/language_model.py b/src/max/pipelines/architectures/llama_vision/language_model.py new file mode 100644 index 0000000000..0d0e282185 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/language_model.py @@ -0,0 +1,468 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Language Model.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, ops +from max.graph.weights import Weights +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + KVCacheParams, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRopeQKV, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + TransformerBlock, +) +from max.pipelines.nn.layer import Layer + +from .cross_attention_decoder import ( + CrossAttentionDecoderLayer, + CrossSdpaAttention, +) + + +@dataclass +class TextModel(Layer): + """ + The Llama text model which consists of transformer with self and cross attention layers. + """ + + dtype: DType + kv_params: KVCacheParams + embed_tokens: Embedding + layers: list[CrossAttentionDecoderLayer | TransformerBlock] + norm: RMSNorm + cross_attention_layers: list[int] + rotary_emb: OptimizedRotaryEmbedding + + def __call__( + self, + text_kv_cache_inputs: tuple[TensorValue, ...], + vision_kv_cache_inputs: tuple[TensorValue, ...], + input_ids: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + ) -> TensorValue: + inputs_embeds = self.embed_tokens(input_ids) + + hidden_states = ops.cast(inputs_embeds, self.dtype) + + before_attention_blocks_shape = hidden_states.shape + + # Assume that text and vision KV caches have the same KV params for now. + # So they can share the KV collection constructor object. + kv_collection_constructor = FetchContinuousBatchingKVCacheCollection( + self.kv_params + ) + + # Construct text and vision KV collections with their distinct inputs. + text_kv_collection = kv_collection_constructor(*text_kv_cache_inputs) + vision_kv_collection = kv_collection_constructor( + *vision_kv_cache_inputs + ) + + for decoder_layer in self.layers: + # For text-only path we should skip cross attention layers. + # We expect cross_attention_states to be zeroes if it's a text-only path. + # The underlying implementation should be a no-op when a zeroed out cross + # attention states is passed in. + + if isinstance(decoder_layer, CrossAttentionDecoderLayer): + hidden_states = decoder_layer( + hidden_states, + hidden_input_row_offsets, + hidden_max_seq_len, + cross_attention_states, + cross_input_row_offsets, + vision_kv_collection, + ) + else: + hidden_states = decoder_layer( + hidden_states, + text_kv_collection, + input_row_offsets=hidden_input_row_offsets, + ) + + assert hidden_states.shape == before_attention_blocks_shape + + return self.norm(hidden_states) + + +@dataclass +class CausalLanguageModel(Layer): + """The Llama Vision Text Model with a language modeling head on top.""" + + dtype: DType + kv_params: KVCacheParams + model: TextModel + lm_head: Linear + + def __call__( + self, + text_kv_cache_inputs: tuple[TensorValue, ...], + vision_kv_cache_inputs: tuple[TensorValue, ...], + input_ids: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_attention_states: TensorValue, + cross_input_row_offsets: TensorValue, + ) -> TensorValue: + last_hidden_state = self.model( + text_kv_cache_inputs, + vision_kv_cache_inputs, + input_ids, + hidden_input_row_offsets, + hidden_max_seq_len, + cross_attention_states, + cross_input_row_offsets, + ) + + # For ragged tensors gather the last tokens from packed dim 0. + last_token_indices = hidden_input_row_offsets[1:] - 1 + last_token_logits = ops.gather( + last_hidden_state, last_token_indices, axis=0 + ) + return ops.cast(self.lm_head(last_token_logits), self.dtype) # logits + + +def cross_attention_decoder_layer( + dtype: DType, + num_attention_heads: int, + hidden_size: int, + num_key_value_heads: int, + rms_norm_eps: float, + kv_params: KVCacheParams, + intermediate_size: int, + weights: Weights, + layer_idx: int, +) -> CrossAttentionDecoderLayer: + head_dim = hidden_size // num_attention_heads + sdpa_attn = CrossSdpaAttention( + n_heads=num_attention_heads, + kv_params=kv_params, + layer_idx=layer_idx, + q_proj=Linear( + weights.cross_attn.q_proj.weight.allocate( + dtype, + [ + num_attention_heads * head_dim, + hidden_size, + ], + ), + bias=None, + ), + wk=weights.cross_attn.k_proj.weight.allocate( + dtype, + [ + num_key_value_heads * head_dim, + hidden_size, + ], + ), + wv=weights.cross_attn.v_proj.weight.allocate( + dtype, + [ + num_key_value_heads * head_dim, + hidden_size, + ], + ), + o_proj=Linear( + weight=weights.cross_attn.o_proj.weight.allocate( + dtype, + [ + hidden_size, + num_attention_heads * head_dim, + ], + ), + bias=None, + ), + q_norm=RMSNorm( + weight=weights.cross_attn.q_norm.weight.allocate( + dtype, + [head_dim], + ), + eps=rms_norm_eps, + ), + k_norm=RMSNorm( + weight=weights.cross_attn.k_norm.weight.allocate( + dtype, + [head_dim], + ), + eps=rms_norm_eps, + ), + ) + return CrossAttentionDecoderLayer( + cross_attn=sdpa_attn, + input_layernorm=RMSNorm( + weight=weights.input_layernorm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + cross_attn_attn_gate=weights.cross_attn_attn_gate.allocate( + dtype, + [1], + ), + mlp=MLP( + gate_proj=Linear( + weight=weights.mlp.gate_proj.weight.allocate( + dtype, + [ + intermediate_size, + hidden_size, + ], + ), + bias=None, + ), + down_proj=Linear( + weight=weights.mlp.down_proj.weight.allocate( + dtype, + [ + hidden_size, + intermediate_size, + ], + ), + bias=None, + ), + up_proj=Linear( + weight=weights.mlp.up_proj.weight.allocate( + dtype, + [ + intermediate_size, + hidden_size, + ], + ), + bias=None, + ), + ), + post_attention_layernorm=RMSNorm( + weight=weights.post_attention_layernorm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + cross_attn_mlp_gate=weights.cross_attn_mlp_gate.allocate( + dtype, + [1], + ), + ) + + +def self_attention_decoder_layer( + dtype: DType, + num_attention_heads: int, + hidden_size: int, + num_key_value_heads: int, + intermediate_size: int, + rms_norm_eps: float, + kv_params: KVCacheParams, + weights: Weights, + layer_idx: int, + rotary_embedding: OptimizedRotaryEmbedding, +) -> TransformerBlock: + head_dim = hidden_size // num_attention_heads + + wq = weights.self_attn.q_proj.weight.allocate( + dtype, shape=[num_attention_heads * head_dim, hidden_size] + ) + wk = weights.self_attn.k_proj.weight.allocate( + dtype, shape=[num_key_value_heads * head_dim, hidden_size] + ) + wv = weights.self_attn.v_proj.weight.allocate( + dtype, shape=[num_key_value_heads * head_dim, hidden_size] + ) + o_proj = Linear( + weight=weights.self_attn.o_proj.weight.allocate( + dtype, + shape=[hidden_size, num_attention_heads * head_dim], + ) + ) + + attention = AttentionWithRopeQKV( + n_heads=num_attention_heads, + kv_params=kv_params, + layer_idx=layer_idx, + wq=wq, + wk=wk, + wv=wv, + wo=o_proj, + rope=rotary_embedding, + scale=math.sqrt(1.0 / head_dim), + ) + + return TransformerBlock( + attention=attention, + mlp=MLP( + gate_proj=Linear( + weight=weights.mlp.gate_proj.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=None, + ), + down_proj=Linear( + weight=weights.mlp.down_proj.weight.allocate( + dtype, + [hidden_size, intermediate_size], + ), + bias=None, + ), + up_proj=Linear( + weight=weights.mlp.up_proj.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=None, + ), + ), + attention_norm=RMSNorm( + weight=weights.input_layernorm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + mlp_norm=RMSNorm( + weight=weights.post_attention_layernorm.weight.allocate( + dtype, [hidden_size] + ), + eps=rms_norm_eps, + ), + ) + + +def instantiate_language_model( + dtype: DType, + hidden_size: int, + n_heads: int, + rope_theta: int, + max_seq_len: int, + num_hidden_layers: int, + cross_attention_layers: list[int], + vocab_size: int, + rms_norm_eps: float, + num_key_value_heads: int, + intermediate_size: int, + kv_params: KVCacheParams, + weights: Weights, +) -> CausalLanguageModel: + layers: list[CrossAttentionDecoderLayer | TransformerBlock] = [] + + # We don't really have a rotary embedding layer within the graph as it's largely + # folded into the custom kernel, but leaving this here for now. + rotary_embedding = OptimizedRotaryEmbedding( + dim=hidden_size, + n_heads=n_heads, + theta=rope_theta, + max_seq_len=max_seq_len, + # TODO: Figure out how we want to pass this + # rope_scaling=params.rope_scaling, + interleaved=False, + ) + + # Track the cross attention KV cache layer index to compute the self + # attention KV layer index. + cross_kv_layer_idx = -1 + for layer_idx in range( + num_hidden_layers, + ): + curr_layer_weight = weights.language_model.model.layers[layer_idx] + + if layer_idx in cross_attention_layers: + cross_kv_layer_idx = cross_attention_layers.index(layer_idx) + layers.append( + cross_attention_decoder_layer( + dtype=dtype, + num_attention_heads=n_heads, + hidden_size=hidden_size, + num_key_value_heads=num_key_value_heads, + rms_norm_eps=rms_norm_eps, + kv_params=kv_params, + intermediate_size=intermediate_size, + weights=curr_layer_weight, + layer_idx=cross_kv_layer_idx, + ) + ) + else: + layers.append( + self_attention_decoder_layer( + dtype=dtype, + num_attention_heads=n_heads, + hidden_size=hidden_size, + num_key_value_heads=num_key_value_heads, + intermediate_size=intermediate_size, + rms_norm_eps=rms_norm_eps, + kv_params=kv_params, + weights=curr_layer_weight, + # Self KV layer index is the total layer index minus the + # number of cross KV layers so far. + layer_idx=layer_idx - cross_kv_layer_idx + 1, + rotary_embedding=rotary_embedding, + ) + ) + + text_model = TextModel( + dtype=dtype, + kv_params=kv_params, + embed_tokens=Embedding( + weights.language_model.model.embed_tokens.weight.allocate( + dtype, + [ + # Upstream in the Huggingface llama reference, 8 is added to the vocab size. + vocab_size + 8, + hidden_size, + ], + ), + ), + norm=RMSNorm( + weight=weights.language_model.model.norm.weight.allocate( + dtype, + [hidden_size], + ), + eps=rms_norm_eps, + ), + layers=layers, + cross_attention_layers=cross_attention_layers, + # TODO: Verify if these values passed are even correct. + rotary_emb=rotary_embedding, + ) + + return CausalLanguageModel( + dtype=dtype, + kv_params=kv_params, + model=text_model, + lm_head=Linear( + weights.language_model.lm_head.weight.allocate( + dtype, + [ + vocab_size, + hidden_size, + ], + ), + bias=None, + ), + ) diff --git a/src/max/pipelines/architectures/llama_vision/llama_vision.py b/src/max/pipelines/architectures/llama_vision/llama_vision.py new file mode 100644 index 0000000000..accd5f919a --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/llama_vision.py @@ -0,0 +1,1202 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +from collections.abc import Sequence +from concurrent.futures import ThreadPoolExecutor +from dataclasses import dataclass +from typing import Any, Iterable, Optional, cast, final + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession, Model +from max.graph import Dim, Graph, Shape, TensorType, TensorValue, ops +from max.graph.weights import Weights +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextAndVisionContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheManager, + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + KVCacheParams, + KVCacheStrategy, + PaddedKVCacheInputs, + RaggedKVCacheInputs, + estimate_kv_cache_size, + infer_optimal_batch_size, + load_kv_manager, +) +from max.pipelines.kv_cache._utils import build_max_lengths_tensor +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import Layer + +from .language_model import CausalLanguageModel, instantiate_language_model +from .vision_model import instantiate_vision_model + +logger = logging.getLogger("max.pipelines") + + +@dataclass +class MultimodalKVCacheInputSymbols(KVCacheInputSymbols): + text_kv_input_symbols: KVCacheInputSymbols + vision_kv_input_symbols: KVCacheInputSymbols + + +@dataclass +class MultimodalKVCacheInputs(KVCacheInputs): + text_kv_cache_inputs: KVCacheInputs + vision_kv_cache_inputs: KVCacheInputs + + +class MultimodalKVCacheManager(KVCacheManager): + """A lightweight wrapper around text and vision KV managers. + + Note on runtime and graph build time return types: + - Currently the multi modal KV manager doesn't support multiple devices. + So all lists that should be of length num_devices will have length 1. + - Individual modality KV cache managers return a 4-tuple of KV cache inputs. + Since this is a pair of KV cache managers, it returns an 8-tuple, + where the first 4 elements are the text KV cache inputs and the remaining + 4 elements are the vision KV cache inputs. + - This 8-tuple applies for both input symbols and return KV cache inputs. + - TODO(bduke): We should fix both multi-device and multi-modality using an + extensible KVCacheInput type. + """ + + text_kv_manager: KVCacheManager + """KV cache manager for text inputs.""" + + vision_kv_manager: ContinuousBatchingKVCacheManager + """KV cache manager for image inputs.""" + + def __init__( + self, + params: KVCacheParams, + max_batch_size: Optional[int], + text_max_seq_len: int, + vision_max_seq_len: int, + text_num_layers: int, + vision_num_layers: int, + devices: list[Device], + session: InferenceSession, + available_cache_memory: int, + page_size: int, + ) -> None: + assert max_batch_size, "Expected max_batch_size to be set" + self.text_kv_manager = load_kv_manager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=text_max_seq_len, + num_layers=text_num_layers, + devices=devices, + available_cache_memory=available_cache_memory, + page_size=page_size, + session=session, + ) + + # Always use continuous batching KV cache for the vision KV projections, + # since the number of vision tokens is fixed per batch until we support + # multi-image, at least. + self.vision_kv_manager = ContinuousBatchingKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=vision_max_seq_len, + num_layers=vision_num_layers, + devices=devices, + session=session, + ) + + # Call superclass after initializing modality KV managers since the + # superclass ctor calls methods that use the modality KV managers. + super().__init__( + params, + max_batch_size, + text_max_seq_len, + text_num_layers, + devices, + session, + is_ragged=True, + ) + + @classmethod + @final + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated total memory usage of the kv cache.""" + assert "num_vision_layers" in kwargs, "num_vision_layers must be set" + num_vision_layers = kwargs["num_vision_layers"] + assert "max_vision_seq_len" in kwargs, "max_vision_seq_len must be set" + max_vision_seq_len = kwargs["max_vision_seq_len"] + + vision_kv_cache_size = ( + ContinuousBatchingKVCacheManager.estimated_memory_size( + params, + max_batch_size, + max_vision_seq_len, + num_vision_layers, + available_cache_memory, + devices, + ) + ) + + remaining_memory = available_cache_memory - vision_kv_cache_size + if remaining_memory > 0: + text_kv_cache_size = estimate_kv_cache_size( + params, + max_batch_size, + max_seq_len, + num_layers, + remaining_memory, + devices, + ) + return vision_kv_cache_size + text_kv_cache_size + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated optimal batch size for the kv cache.""" + assert "num_vision_layers" in kwargs, "num_vision_layers must be set" + num_vision_layers = kwargs["num_vision_layers"] + assert "max_vision_seq_len" in kwargs, "max_vision_seq_len must be set" + max_vision_seq_len = kwargs["max_vision_seq_len"] + + # figure out the relative sizes of caches based on KV Cach settings + text_size_per_token = num_layers * max_seq_len + vision_size_per_token = num_vision_layers * max_vision_seq_len + text_to_vision_ratio = text_size_per_token / ( + text_size_per_token + vision_size_per_token + ) + + # divvy up our allocation based on this ratio + text_cache_size = available_cache_memory * text_to_vision_ratio + vision_cache_size = available_cache_memory - text_cache_size + + # infer the optimal batch size for each modality based on its cache size + text_batch_size = infer_optimal_batch_size( + params, + max_seq_len, + num_layers, + text_cache_size, + devices, + ) + vision_batch_size = ( + ContinuousBatchingKVCacheManager.infer_optimal_batch_size( + params, + max_vision_seq_len, + num_vision_layers, + vision_cache_size, + devices, + ) + ) + + return min(text_batch_size, vision_batch_size) + + @final + def _fetch( + self, seq_ids_and_prompts: dict[int, np.ndarray], num_steps: int = 1 + ) -> list[KVCacheInputs]: + """Returns KV cache inputs for both modalities' KV managers.""" + # Here we call into the text KV manager's fetch method to update + # its fetch metadata. + text_fetch_results = self.text_kv_manager.fetch( + seq_ids_and_prompts, num_steps + )[0] + + # For the vision KV manager, fetch metadata isn't applicable since + # autoregressive generation is text only. + active_batch_size = len(seq_ids_and_prompts) + + # Lookup table and seq_ids are redundant identical tensors. + lookup_table_tensor = Tensor.from_numpy( + np.array(list(seq_ids_and_prompts.keys()), np.uint32) + ) + cache_lengths_np = np.zeros(active_batch_size, np.uint32) + + max_seq_length = 0 + max_cache_length = 0 + + device = self.vision_kv_manager.devices[0] + for i, seq_id in enumerate(seq_ids_and_prompts): + # Assumption: all seq_ids with + # `vision_kv_manager.cache_lengths[seq_id] == 0` + # are context encoding steps and have the max image sequence length. + # TODO(bduke): pass the vision sequence lengths in from next_token. + + # Omit validity checks on seq ids, which are done in the text fetch. + cache_len = self.vision_kv_manager.cache_lengths[seq_id] + if cache_len == 0: + max_seq_length = self.vision_kv_manager.max_seq_len + + cache_lengths_np[i] = cache_len + + # Update the maximum lengths seen so far. + max_cache_length = max(max_cache_length, cache_len) + + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_host = build_max_lengths_tensor( + num_steps, max_seq_length, max_cache_length + ) + + vision_fetch_results = RaggedKVCacheInputs( + # Block 0 for the first device (since MultimodalKVCacheManager + # assumes only 1 device). + blocks=self.vision_kv_manager.blocks[0], + cache_lengths=Tensor.from_numpy(cache_lengths_np).to(device), + lookup_table=lookup_table_tensor.to(device), + max_lengths=max_lengths_host, + ) + + multimodal_kv_inputs = [ + MultimodalKVCacheInputs(text_fetch_results, vision_fetch_results) + ] + return cast(list[KVCacheInputs], multimodal_kv_inputs) + + @final + def input_symbols( + self, + ) -> Sequence[MultimodalKVCacheInputSymbols]: + """Returns concatenated input symbols for text and vision KV managers. + + This has to rename input symbols that aren't necessarily the same: + `num_layers` and `max_seq_len` differ in general between text and + vision modalities. + """ + + def _input_symbols( + manager: KVCacheManager, num_layers_key: str, max_seq_len_key: str + ) -> KVCacheInputSymbols: + input_symbols = manager.input_symbols()[0] + # Get first element from input_symbols sequence + first_input_symbols = input_symbols[0] + assert isinstance(first_input_symbols, TensorType) + first_input_symbols.shape = Shape( + [ + "num_blocks", + 2, + num_layers_key, + max_seq_len_key, + "num_kv_heads", + "head_dim", + ] + ) + return input_symbols + + return [ + MultimodalKVCacheInputSymbols( + text_kv_input_symbols=_input_symbols( + self.text_kv_manager, "text_num_layers", "text_max_seq_len" + ), + vision_kv_input_symbols=_input_symbols( + self.vision_kv_manager, + "vision_num_layers", + "vision_max_seq_len", + ), + ) + ] + + def step(self, seq_ids_and_new_tokens: dict[int, np.ndarray]) -> None: + """Steps both text and vision modalities' KV managers.""" + # Step the text KV manager as usual for autoregressive text generation. + self.text_kv_manager.step(seq_ids_and_new_tokens) + + # Keep the base class's state in sync with the text KV manager's. + super().step(seq_ids_and_new_tokens) + + # Increment cache lengths for the vision KV manager iff this is a + # context encoding (CE) step with an image input. + # It's a CE step if the existing cache_lengths[seq_id] is 0. + for seq_id in seq_ids_and_new_tokens: + self.vision_kv_manager.cache_lengths[seq_id] += ( + self.vision_kv_manager.max_seq_len + if self.vision_kv_manager.cache_lengths[seq_id] == 0 + else 0 + ) + + def external_claim(self, seq_ids: list[int]) -> None: + """Reserves the same sequence ids for both modalities' KV caches.""" + self.text_kv_manager.external_claim(seq_ids) + self.vision_kv_manager.external_claim(seq_ids) + + # Keep the base class's state in sync with the text KV manager's. + super().external_claim(seq_ids) + + def release(self, seq_id: int) -> None: + """Marks the sequence complete for both modalities' KV caches.""" + self.text_kv_manager.release(seq_id) + self.vision_kv_manager.release(seq_id) + super().release(seq_id) + + def contains(self, seq_id: int) -> bool: + """Returns whether `seq_id` is in the KV cache.""" + text_kv_contains = self.text_kv_manager.contains(seq_id) + + # Assume that the modalities' KV caches have consistent sequence ids. + assert text_kv_contains == self.vision_kv_manager.contains(seq_id) + + return text_kv_contains + + def num_kv_inputs(self) -> int: + """Returns the sum of the KV input lengths for both modalities.""" + return ( + self.text_kv_manager.num_kv_inputs() + + self.vision_kv_manager.num_kv_inputs() + ) + + def increment_cache_lengths( + self, + kv_cache_inputs: list[RaggedKVCacheInputs] | list[PaddedKVCacheInputs], + prev_model_inputs: Iterable[Any], + ) -> list[RaggedKVCacheInputs] | list[PaddedKVCacheInputs]: + """Updates the cache lengths for multistep execution. + + This increments the text and vision KV cache lengths separately using + their respective KV cache inputs. + """ + # Cast the input to MultimodalKVCacheInputs to access its components + multimodal_inputs = cast(list[MultimodalKVCacheInputs], kv_cache_inputs) + text_kv_inputs = multimodal_inputs[0].text_kv_cache_inputs + vision_kv_inputs = multimodal_inputs[0].vision_kv_cache_inputs + + multimodal_kv_inputs = [ + MultimodalKVCacheInputs( + text_kv_cache_inputs=self.text_kv_manager.increment_cache_lengths( + [text_kv_inputs], # type: ignore + prev_model_inputs, + )[0], + vision_kv_cache_inputs=self.vision_kv_manager.increment_cache_lengths( + [vision_kv_inputs], # type: ignore + prev_model_inputs, + )[0], + ) + ] + return cast(list[RaggedKVCacheInputs], multimodal_kv_inputs) + + +# TODO(bduke): use `@dataclass(slots=True)` when we drop 3.9 support. +class LlamaVisionInputs(ModelInputs): + """Holds language model inputs and (optionally) vision model inputs.""" + + # Language model inputs. + input_id_values: Tensor + input_row_offsets: Tensor + input_id_max_seq_len: Tensor + pixel_row_offsets: Tensor + + # Vision model inputs. + _pixel_values: Tensor | None = None + _aspect_ratio_ids: Tensor | None = None + _aspect_ratio_mask: Tensor | None = None + + def __init__( + self, + input_id_values: Tensor, + input_row_offsets: Tensor, + input_id_max_seq_len: Tensor, + pixel_row_offsets: Tensor, + pixel_values: Tensor | None = None, + aspect_ratio_ids: Tensor | None = None, + aspect_ratio_mask: Tensor | None = None, + kv_cache_inputs: KVCacheInputs | None = None, + ): + self.input_id_values = input_id_values + self.input_row_offsets = input_row_offsets + self.input_id_max_seq_len = input_id_max_seq_len + self.pixel_row_offsets = pixel_row_offsets + self._pixel_values = pixel_values + self._aspect_ratio_ids = aspect_ratio_ids + self._aspect_ratio_mask = aspect_ratio_mask + self.kv_cache_inputs = kv_cache_inputs + + def __post_init__(self) -> None: + """Validate consistency between vision fields. + + If pixel_values is set, then aspect_ratio_ids, aspect_ratio_mask, + and pixel_row_offsets must also be set, and vice versa. + """ + if self.has_vision_inputs: + if not all( + x is not None + for x in ( + self._aspect_ratio_ids, + self._aspect_ratio_mask, + self.pixel_row_offsets, + ) + ): + msg = "provide all or none of Llama Vision vision model inputs" + raise ValueError(msg) + else: + for field_name in ("_aspect_ratio_ids", "_aspect_ratio_mask"): + if getattr(self, field_name) is not None: + msg = f"{field_name} must be None if _pixel_values is None" + raise ValueError(msg) + + @property + def has_vision_inputs(self) -> bool: + """Returns true iff this includes vision model inputs.""" + return self._pixel_values is not None + + @property + def pixel_values(self) -> Tensor: + assert self._pixel_values is not None + return self._pixel_values + + @property + def aspect_ratio_ids(self) -> Tensor: + assert self._aspect_ratio_ids is not None + return self._aspect_ratio_ids + + @property + def aspect_ratio_mask(self) -> Tensor: + assert self._aspect_ratio_mask is not None + return self._aspect_ratio_mask + + def update_for_next_token( + self, + next_tokens: Tensor, + next_row_offsets: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> LlamaVisionInputs: + """Updates next_tokens and row_offsets after an initial step.""" + return LlamaVisionInputs( + input_id_values=next_tokens, + input_row_offsets=next_row_offsets, + input_id_max_seq_len=self.input_id_max_seq_len, + pixel_row_offsets=self.pixel_row_offsets, + # Set vision model inputs to None after the first `next_token`. + pixel_values=None, + aspect_ratio_ids=None, + aspect_ratio_mask=None, + kv_cache_inputs=kv_cache_inputs, + ) + + +class LlamaVisionModel(Layer): + """The Llama 3.2 vision model.""" + + def __init__( + self, pipeline_config: PipelineConfig, weights: Weights + ) -> None: + # Set convenience attributes for the text and vision configs. + self.vision_config = pipeline_config.huggingface_config.vision_config + self.text_config = pipeline_config.huggingface_config.text_config + + self.vision_model = instantiate_vision_model( + dtype=pipeline_config.dtype, + image_size=self.vision_config.image_size, + patch_size=self.vision_config.patch_size, + supported_aspect_ratios=self.vision_config.supported_aspect_ratios, + hidden_size=self.vision_config.hidden_size, + max_num_tiles=self.vision_config.max_num_tiles, + num_channels=self.vision_config.num_channels, + norm_eps=self.vision_config.norm_eps, + attention_heads=self.vision_config.attention_heads, + num_hidden_layers=self.vision_config.num_hidden_layers, + intermediate_size=self.vision_config.intermediate_size, + num_global_layers=self.vision_config.num_global_layers, + intermediate_layers_indices=self.vision_config.intermediate_layers_indices, + weights=weights, + ) + + self.multi_modal_projector = Linear( + weights.multi_modal_projector.weight.allocate( + pipeline_config.dtype, + [ + self.text_config.hidden_size, + self.vision_config.vision_output_dim, + ], + ), + weights.multi_modal_projector.bias.allocate( + pipeline_config.dtype, + [self.text_config.hidden_size], + ), + ) + + def __call__( + self, + pixel_values: TensorValue, + aspect_ratio_ids: TensorValue, + aspect_ratio_mask: TensorValue, + ) -> TensorValue: + if aspect_ratio_ids is None: + msg = "`aspect_ratio_ids` must be provided if `pixel_values` is provided" + raise ValueError(msg) + + # Get vision tokens from vision model. + vision_outputs = self.vision_model( + pixel_values=pixel_values, + aspect_ratio_ids=aspect_ratio_ids, + aspect_ratio_mask=aspect_ratio_mask, + ) + cross_attention_states = vision_outputs[0] + + num_patches = cross_attention_states.shape[-2] + + return self.multi_modal_projector(cross_attention_states).reshape( + [ + Dim("batch_size") + * Dim("num_concurrent_media") + * self.vision_config.max_num_tiles + * num_patches, + self.text_config.hidden_size, + ] + ) + + +class LlamaVisionLanguageModel(Layer): + """The Llama 3.2 vision language model.""" + + language_model: CausalLanguageModel + """Language model composed of self and cross attention layers.""" + + num_text_kv_cache_inputs: int + """Number of KV cache inputs for self attention layers.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + weights: Weights, + kv_params: KVCacheParams, + max_seq_len: int, + num_text_kv_cache_inputs: int, + ) -> None: + text_config = pipeline_config.huggingface_config.text_config + + self.language_model = instantiate_language_model( + dtype=pipeline_config.dtype, + hidden_size=text_config.hidden_size, + n_heads=text_config.num_attention_heads, + rope_theta=text_config.rope_theta, + max_seq_len=max_seq_len, + num_hidden_layers=text_config.num_hidden_layers, + cross_attention_layers=text_config.cross_attention_layers, + vocab_size=text_config.vocab_size, + rms_norm_eps=text_config.rms_norm_eps, + num_key_value_heads=text_config.num_key_value_heads, + intermediate_size=text_config.intermediate_size, + kv_params=kv_params, + weights=weights, + ) + self.num_text_kv_cache_inputs = num_text_kv_cache_inputs + + def __call__( + self, + cross_attention_states: TensorValue, + input_ids: TensorValue, + hidden_input_row_offsets: TensorValue, + hidden_max_seq_len: TensorValue, + cross_input_row_offsets: TensorValue, + *kv_cache_inputs: TensorValue, + ) -> TensorValue: + logits = self.language_model( + text_kv_cache_inputs=kv_cache_inputs[ + : self.num_text_kv_cache_inputs + ], + vision_kv_cache_inputs=kv_cache_inputs[ + self.num_text_kv_cache_inputs : + ], + input_ids=input_ids, + hidden_input_row_offsets=hidden_input_row_offsets, + hidden_max_seq_len=hidden_max_seq_len, + cross_attention_states=cross_attention_states, + cross_input_row_offsets=cross_input_row_offsets, + ) + + # Always return float32 logits, no matter the activation type + return ops.cast(logits, DType.float32) + + +class LlamaVision(PipelineModel[TextAndVisionContext]): + """The entire (multimodal) Llama3.2 vision model. + + A note on multi-step and vision inputs: + + - `has_images` in `prepare_initial_token_inputs` is determined by whether or + not `pixel_values` is set on each TextAndVisionContext in the batch. + So on the context encoding call, the caller sets pixel_values, making + `has_images` True. + - `prepare_initial_token_inputs` unsets `ctx.pixel_values` (sets it to an + empty list). + So the next prepare_initial_token_inputs will have has_images == False + (the next multi-step train will skip the vision encoder). + - That covers the num_steps = 1 case. + - For multistep, the prepare_next_token_inputs function will unset + LlamaVisionInputs.pixel_values (and aspect ratio ids/mask). + So for multistep, step > 1, subsequent steps won't run the vision encoder. + - Note the 2 different mechanisms: `has_images` is determined by + `TextAndVisionContext.pixel_values` in `prepare_initial_token_inputs`, + but it is determined by `LlamaVisionInputs.pixel_values` in + `PipelineModel.execute` (which is called multiple times in a multi-step + train, so `prepare_next_token_inputs` needs to unset + `LlamaVisionInputs.pixel_values`). + """ + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + # Set convenience attributes for the text and vision configs. + self.vision_config = pipeline_config.huggingface_config.vision_config + self.text_config = pipeline_config.huggingface_config.text_config + + # These need to be set at graph instantiation time. + self.vision_graph_input_size = -1 + self.language_graph_input_size = -1 + + super().__init__(pipeline_config, session) + self.vision_model, self.language_model = self.load_model(session) + # Note that in a multimodal model, the language model is the last model in the + # pipeline. Unfortunately, self.model is still being used (and exposed) + # in the token generation code, so we still need to set it here. + self.model = self.language_model + + def _llama3_vision_vision_graph(self) -> Graph: + # Inserted a manual CHW -> HWC transpose here. + pixel_values_type = TensorType( + # This has to be of type float32 as we construct tensors from a numpy + # array (which has no notion of some dtypes like bfloat16). Explicit + # casting will happen inside the graph. + DType.float32, + shape=[ + "batch_size", + "num_concurrent_media", + self.vision_config.max_num_tiles, + self.vision_config.image_size, # height + self.vision_config.image_size, # width + self.vision_config.num_channels, + ], + ) + aspect_ratio_ids_type = TensorType( + DType.int64, + shape=["batch_size", "num_concurrent_media"], + ) + aspect_ratio_mask_type = TensorType( + DType.int64, + shape=[ + "batch_size", + "num_concurrent_media", + self.vision_config.max_num_tiles, + ], + ) + + input_types = [ + pixel_values_type, + aspect_ratio_ids_type, + aspect_ratio_mask_type, + ] + self.vision_graph_input_size = len(input_types) + return Graph( + "llama3-vision-vision-model-graph", + forward=LlamaVisionModel( + pipeline_config=self.pipeline_config, weights=self.weights + ), + input_types=input_types, + ) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.text_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Llama Vision, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.text_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def _llama3_vision_language_graph(self) -> Graph: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + input_ids_type = TensorType(DType.int64, shape=["total_seq_len"]) + # image_size = self.vision_config.image_size + # patch_size = self.vision_config.patch_size + cross_attention_states_type = TensorType( + self.pipeline_config.dtype, + shape=[ + # TODO(bduke): fix algebraic dim creation outside of graph + # contexts. + # Dim("batch_size") + # * "num_concurrent_media" + # * self.vision_config.max_num_tiles + # * ((image_size // patch_size) ** 2 + 1), + "num_vision_embeddings", + self.text_config.hidden_size, + ], + ) + input_ids_max_seq_len_type = TensorType(DType.uint32, [1]) + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + cross_row_offsets_type = input_row_offsets_type + + # Unpack multimodal KV inputs. + assert isinstance(self.kv_manager, MultimodalKVCacheManager) + input_symbols = self.kv_manager.input_symbols()[0] + text_kv_input_symbols = input_symbols.text_kv_input_symbols + vision_kv_input_symbols = input_symbols.vision_kv_input_symbols + + input_types = [ + cross_attention_states_type, + input_ids_type, + input_row_offsets_type, + input_ids_max_seq_len_type, + cross_row_offsets_type, + *text_kv_input_symbols, + *vision_kv_input_symbols, + ] + self.language_graph_input_size = len(input_types) + + return Graph( + "llama3-vision-language-model-graph", + forward=LlamaVisionLanguageModel( + pipeline_config=self.pipeline_config, + weights=self.weights, + kv_params=self.get_kv_params(self.pipeline_config), + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_text_kv_cache_inputs=len(list(text_kv_input_symbols)), + ), + input_types=input_types, + ) + + @property + def vision_max_seq_len(self) -> int: + """Returns the maximum number of vision tokens.""" + return self._calculate_vision_max_seq_len(self.pipeline_config) + + @classmethod + def _calculate_vision_max_seq_len(cls, config: PipelineConfig) -> int: + """Returns the maximum number of vision tokens.""" + # Marshal out hyperparameters. + height = config.huggingface_config.vision_config.image_size + width = config.huggingface_config.vision_config.image_size + max_num_tiles = config.huggingface_config.vision_config.max_num_tiles + patch_size = config.huggingface_config.vision_config.patch_size + # TODO(bduke): account for the actual instead of max number of tiles. + # num_tiles * (image_dim**2 // patch_dim**2 + 1 (cls token)) + return max_num_tiles * ((height * width) // patch_size**2 + 1) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return ( + pipeline_config.huggingface_config.vision_config.num_hidden_layers + ) + + def _prepare_vision_inputs( + self, + context_batch: Sequence[TextAndVisionContext], + ) -> tuple[Tensor, Tensor, Tensor]: + """Batches up pixel_values, aspect_ratio_ids, and aspect_ratio_masks.""" + images = [] + aspect_ratio_ids_list = [] + aspect_ratio_mask_list = [] + for context in context_batch: + # Get first image in first batch and permute the order to (HWC). + image = np.transpose(context.pixel_values, (0, 1, 3, 4, 2)) + + # Add batch_size, num_concurrent_media, and max_num_tiles dimensions + # [1, num_concurrent_media, max_num_tiles, H, W, C] + image = np.expand_dims(image, axis=(0)) + images.append(image) + + if "aspect_ratio_ids" not in context.extra_model_args: + msg = "aspect_ratio_ids is required for image / vision model input" + raise ValueError(msg) + + if "aspect_ratio_mask" not in context.extra_model_args: + msg = "aspect_ratio_mask is required for image / vision model input" + raise ValueError(msg) + + aspect_ratio_ids_list.append( + context.extra_model_args["aspect_ratio_ids"] + ) + aspect_ratio_mask_list.append( + context.extra_model_args["aspect_ratio_mask"] + ) + + # Convert the list into a single NumPy array with shape + # (batch_size, 1, max_num_tiles, H, W, C). + final_images = np.concatenate(images, axis=0) + + pixel_values = Tensor.from_numpy(final_images).to( + self.pipeline_config.devices[0] + ) + + final_aspect_ratio_ids = np.concatenate(aspect_ratio_ids_list, axis=0) + + aspect_ratio_ids = Tensor.from_numpy(final_aspect_ratio_ids).to( + self.pipeline_config.devices[0] + ) + + final_aspect_ratio_mask = np.concatenate(aspect_ratio_mask_list, axis=0) + + aspect_ratio_mask = Tensor.from_numpy(final_aspect_ratio_mask).to( + self.pipeline_config.devices[0] + ) + + return pixel_values, aspect_ratio_ids, aspect_ratio_mask + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextAndVisionContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> LlamaVisionInputs: + """Creates tensors of token and image inputs, if applicable.""" + if self.pipeline_config.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = "Llama Vision only supports continuous batching" + raise ValueError(msg) + + def has_image(pixel_values: np.ndarray | list[np.ndarray]) -> bool: + return pixel_values is not None and len(pixel_values) > 0 + + has_images = any(has_image(ctx.pixel_values) for ctx in context_batch) + if has_images and not all( + has_image(ctx.pixel_values) for ctx in context_batch + ): + msg = ( + "expected context batch to all have images, or no images at all" + ) + raise RuntimeError(msg) + + def initial_prompt_missing_image(ctx: TextAndVisionContext) -> bool: + return ctx.is_initial_prompt and not has_image(ctx.pixel_values) + + if any(initial_prompt_missing_image(ctx) for ctx in context_batch): + msg = "The Llama Vision model currently requires a prompt with an image. Consider using the regular text-only models for non-image prompts" + raise RuntimeError(msg) + + # Prepare vision inputs if applicable. + pixel_values = None + aspect_ratio_ids = None + aspect_ratio_mask = None + if has_images: + pixel_values, aspect_ratio_ids, aspect_ratio_mask = ( + self._prepare_vision_inputs(context_batch) + ) + + # Input row offset type: ["input_row_offsets_len"], UInt32 + input_id_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + pixel_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + + [ + # Use an input row offset of 0 to mean no image. + self.vision_max_seq_len + if has_image(ctx.pixel_values) + else 0 + for ctx in context_batch + ], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + # Input Ids: ["total_seq_len"], Int64 + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + input_id_values = Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ) + # This lives on host / in the CPU kernel, but is later casted to a scalar on + # device kernel side. No need for explicit .to(pipeline_config.device) call here. + input_id_max_seq_len = Tensor.from_numpy( + np.array( + [max(ctx.active_length for ctx in context_batch)], + dtype=np.uint32, + ) + ) + + # Unset the context's pixel values so that subsequent next_token + # calls reusing the same context won't run the vision encoder. + for ctx in context_batch: + ctx.pixel_values = [] + + return LlamaVisionInputs( + input_id_values=input_id_values, + input_row_offsets=input_id_row_offsets, + input_id_max_seq_len=input_id_max_seq_len, + pixel_row_offsets=pixel_row_offsets, + pixel_values=pixel_values, + aspect_ratio_ids=aspect_ratio_ids, + aspect_ratio_mask=aspect_ratio_mask, + kv_cache_inputs=kv_cache_inputs, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_inputs: ModelInputs, + ) -> LlamaVisionInputs: + """Produce the updated LlamaVisionInputs for the next token. + + This sets existing vision inputs to none and replaces text tokens and + row offsets. + """ + prev_inputs = cast(LlamaVisionInputs, prev_inputs) + next_row_offsets = self._input_row_offsets_prealloc[ + : prev_inputs.input_row_offsets.shape[0] + ] + + return prev_inputs.update_for_next_token( + next_tokens, next_row_offsets, prev_inputs.kv_cache_inputs + ) + + def execute( + self, + model_inputs: ModelInputs, + ) -> ModelOutputs: + assert model_inputs.kv_cache_inputs is not None, ( + "Llama Vision has KV cache inputs" + ) + # batch_size * num_concurrent_media * max_num_tiles * num_patches + # are set to 0 here to imitate a dummy tensor (used in text-only mode). + cross_attention_states = Tensor.zeros( + shape=[0, self.text_config.hidden_size], + dtype=self.pipeline_config.dtype, + ).to(self.pipeline_config.devices[0]) + + model_inputs = cast(LlamaVisionInputs, model_inputs) + if model_inputs.has_vision_inputs: + # Compute the cross attention states if this is a CE step. + exec_result = self.vision_model.execute( + model_inputs.pixel_values, + model_inputs.aspect_ratio_ids, + model_inputs.aspect_ratio_mask, + copy_inputs_to_device=False, + )[0] + assert isinstance(exec_result, Tensor) + cross_attention_states = exec_result + + all_kv_cache_inputs: list[Tensor] = [] + if isinstance(model_inputs.kv_cache_inputs, MultimodalKVCacheInputs): + all_kv_cache_inputs.extend( + model_inputs.kv_cache_inputs.text_kv_cache_inputs + ) + all_kv_cache_inputs.extend( + model_inputs.kv_cache_inputs.vision_kv_cache_inputs + ) + elif isinstance(model_inputs.kv_cache_inputs, KVCacheInputs): + all_kv_cache_inputs = list(model_inputs.kv_cache_inputs) + else: + raise ValueError( + f"Unsupported kv_cache_inputs type: {type(model_inputs.kv_cache_inputs)}" + ) + + model_outputs = self.language_model.execute( + cross_attention_states, + model_inputs.input_id_values, + model_inputs.input_row_offsets, + model_inputs.input_id_max_seq_len, + model_inputs.pixel_row_offsets, + *all_kv_cache_inputs, + copy_inputs_to_device=False, + ) + assert not self.pipeline_config.enable_echo + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.text_config.num_key_value_heads, + head_dim=( + pipeline_config.huggingface_config.text_config.hidden_size + // pipeline_config.huggingface_config.text_config.num_attention_heads + ), + page_size=pipeline_config.kv_cache_page_size, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + """Loads KV cache management objects for Llama vision. + + Args: + session: Inference session to compile and init the KV cache. + available_cache_memory: Amount of memory available to the KV cache, + in bytes. + + Returns: + A pair of KV managers: one for self the other for cross attention. + """ + num_cross_attn_layers = len(self.text_config.cross_attention_layers) + return MultimodalKVCacheManager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + text_max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + vision_max_seq_len=self.vision_max_seq_len, + text_num_layers=self.text_config.num_hidden_layers + - num_cross_attn_layers, + vision_num_layers=num_cross_attn_layers, + devices=self.pipeline_config.devices, + session=session, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + assert pipeline_config.max_batch_size is not None + + num_cross_attn_layers = len( + pipeline_config.huggingface_config.text_config.cross_attention_layers + ) + return MultimodalKVCacheManager.estimated_memory_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.text_config.num_hidden_layers + - num_cross_attn_layers, + available_cache_memory=available_cache_memory, + devices=devices, + max_vision_seq_len=cls._calculate_vision_max_seq_len( + pipeline_config + ), + num_vision_layers=num_cross_attn_layers, + ) + + @classmethod + def infer_optimal_batch_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + ) -> int: + if ( + len(pipeline_config.devices) == 1 + and pipeline_config.devices[0].is_host + ): + return 1 + + num_cross_attn_layers = len( + pipeline_config.huggingface_config.text_config.cross_attention_layers + ) + optimal_batch_size = MultimodalKVCacheManager.infer_optimal_batch_size( + params=cls.get_kv_params(pipeline_config), + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.text_config.num_hidden_layers + - num_cross_attn_layers, + # TODO(GEX-1843): we underestimate the memory usage of the + # vision model due to multiple activations in flight while executing the + # vision encoder and first few layers of the text encoder in parallel. + # This is a hacky workaround to account for this, in the long term we + # should more accurately measure a model's memory consumption via + # an interface in the graph compiler. + available_cache_memory=int(available_cache_memory * 0.8), + devices=pipeline_config.devices, + max_vision_seq_len=cls._calculate_vision_max_seq_len( + pipeline_config + ), + num_vision_layers=num_cross_attn_layers, + ) + return max( + cls._MIN_DEFAULT_BATCH_SIZE, + min(optimal_batch_size, cls._MAX_DEFAULT_BATCH_SIZE), + ) + + def load_model( + self, + session: InferenceSession, + ) -> tuple[Model, Model]: + """ + Load the Llama vision multimodal model. Since this is a multimodal model, + we have vision and language models (graph) loaded. + """ + self.weights = self.pipeline_config.load_weights() + + def build_vision_model(): + logger.info("Building and compiling vision model...") + before = time.perf_counter() + vision_model_graph = self._llama3_vision_vision_graph() + vision_model = session.load( + vision_model_graph, + weights_registry=self.weights.allocated_weights, + ) + after = time.perf_counter() + logger.info( + f"Compiling vision model took {after - before:.6f} seconds" + ) + return vision_model + + def build_language_model(): + logger.info("Building and compiling language model...") + before = time.perf_counter() + language_model_graph = self._llama3_vision_language_graph() + language_model = session.load( + language_model_graph, + weights_registry=self.weights.allocated_weights, + ) + after = time.perf_counter() + logger.info( + f"Building and compiling language model took {after - before:.6f} seconds" + ) + return language_model + + with ThreadPoolExecutor(max_workers=2) as executor: + vision_model_future = executor.submit(build_vision_model) + language_model_future = executor.submit(build_language_model) + vision_model = vision_model_future.result() + language_model = language_model_future.result() + + return (vision_model, language_model) diff --git a/src/max/pipelines/architectures/llama_vision/mlp.py b/src/max/pipelines/architectures/llama_vision/mlp.py new file mode 100644 index 0000000000..01909f6e42 --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/mlp.py @@ -0,0 +1,36 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Multi-layer Perceptron for Llama 3.2 vision transformer.""" + +from dataclasses import dataclass + +from max.graph import TensorValue, ops +from max.pipelines.nn import Linear +from max.pipelines.nn.layer import Layer + + +@dataclass +class MLP(Layer): + """ + Simple multi-layer perceptron composed of two linear layers. + Uses GELU activation function. + """ + + fc1: Linear + fc2: Linear + + def __call__(self, hidden_states: TensorValue) -> TensorValue: + hidden_states = self.fc1(hidden_states) + hidden_states = ops.gelu(hidden_states) + return self.fc2(hidden_states) diff --git a/src/max/pipelines/architectures/llama_vision/positional_embedding.py b/src/max/pipelines/architectures/llama_vision/positional_embedding.py new file mode 100644 index 0000000000..b581fa76fc --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/positional_embedding.py @@ -0,0 +1,131 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Model Positional Embeddings.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.graph import TensorValue, Weight, ops +from max.pipelines.nn import Embedding +from max.pipelines.nn.layer import Layer + + +@dataclass +class PrecomputedAspectRatioEmbedding(Layer): + """ + Llama 3.2 precomputed aspect ratio embedding. + + Args: + params: Hyperparameters for this PrecomputedAspectRatioEmbedding layer. + gate: The gating parameter to control the contribution of the aspect + ratio embedding. + embedding: The aspect ratio embedding. + """ + + max_num_tiles: int + hidden_size: int + gate: Weight + embedding: Embedding + is_gated: bool = False + + def __call__( + self, hidden_state: TensorValue, aspect_ratio_ids: TensorValue + ) -> TensorValue: + batch_size, num_tiles, _, hidden_size = hidden_state.shape + embeddings = self.embedding(aspect_ratio_ids) + embeddings = embeddings.reshape((-1, num_tiles, 1, self.hidden_size)) + + if self.is_gated: + embeddings = embeddings * ops.tanh(self.gate) + + # We're broadcasting in the add operation below, so we call reshape() + # on embeddings first. + embeddings = embeddings.reshape( + ( + batch_size, + num_tiles, + embeddings.shape[2], + hidden_size, + ) + ) + return hidden_state + embeddings + + +@dataclass +class PrecomputedPositionEmbedding(Layer): + """ + Llama 3.2 precomputed position embedding. + + Args: + gate: The gating parameter to control the contribution of the position + embedding or another component of the model. + embedding: The precomputed position embedding. + tile_embedding: The embedding associated with tiles or patches in a + vision model. + """ + + image_size: int + patch_size: int + hidden_size: int + max_num_tiles: int + gate: Weight + embedding: Weight + tile_embedding: Embedding + + def __call__( + self, hidden_state: TensorValue, aspect_ratio_ids: TensorValue + ) -> TensorValue: + # position embeddings + gated_position_embedding = (1 - ops.tanh(self.gate)) * self.embedding + + num_patches = (self.image_size // self.patch_size) ** 2 + 1 + gated_position_embedding = gated_position_embedding.reshape( + ( + 1, + 1, + num_patches, + self.hidden_size, + ) + ) + # We're broadcasting gated_position_embedding in the add operation below, + # so we call reshape() on hidden_state first. + batch_size, num_tiles, _, _ = hidden_state.shape + hidden_state = hidden_state.reshape( + ( + batch_size, + num_tiles, + num_patches, + self.hidden_size, + ) + ) + hidden_state = hidden_state + gated_position_embedding + + # precomputed tile position embeddings + tile_position_embedding = self.tile_embedding(aspect_ratio_ids) + tile_position_embedding = tile_position_embedding.reshape( + ( + batch_size, + self.max_num_tiles, + num_patches, + self.hidden_size, + ) + ) + gated_tile_position_embedding = ( + ops.tanh(self.gate) * tile_position_embedding + ) + # This explicit reshape is called only to match num_tiles dim in + # tile_position_embedding. + hidden_state = hidden_state.reshape(tile_position_embedding.shape) + return hidden_state + gated_tile_position_embedding diff --git a/src/max/pipelines/architectures/llama_vision/vision_model.py b/src/max/pipelines/architectures/llama_vision/vision_model.py new file mode 100644 index 0000000000..695f2666cb --- /dev/null +++ b/src/max/pipelines/architectures/llama_vision/vision_model.py @@ -0,0 +1,741 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llama 3.2 Transformer Vision Model.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import Dim, StaticDim, TensorValue, TensorValueLike, ops +from max.graph.weights import Weights +from max.pipelines.nn import Conv2D, Embedding, LayerNorm, Linear +from max.pipelines.nn.layer import Layer + +from .attention import Attention +from .encoder import VisionEncoder, VisionEncoderLayer +from .mlp import MLP +from .positional_embedding import ( + PrecomputedAspectRatioEmbedding, + PrecomputedPositionEmbedding, +) + + +# TODO(MAXCORE-170): We should clean this up. This is just a RSCF layout permutation so it +# conforms with our conv op API. +@dataclass +class VisionConv2D(Conv2D): + def __call__(self, x: TensorValue) -> TensorValue: + # Permute first before calling the parent forward pass. + self.filter = ops.permute(self.filter, [2, 3, 1, 0]) + return super().__call__(x=x) + + +@dataclass +class VisionModel(Layer): + """ + Llama 3.2 vision model responsible for encoding images. It consists of two + vision encoders. + + This model is designed to process input images through a combination of convolutional + layers and transformer-based encoders. It utilizes gated and precomputed positional + embeddings to handle spatial information effectively, and supports multi-aspect ratio inputs. + + Args: + params : Hyperparameters that define the architecture and training behavior of the vision model. + gated_positional_embedding: Precomputed positional embeddings that are gated for enhanced spatial encoding. + pre_tile_positional_embedding: Precomputed aspect ratio positional embeddings applied before tiling the input patches. + post_tile_positional_embedding: Precomputed aspect ratio positional embeddings applied after tiling the input patches. + patch_embedding: Convolutional layer that extracts features from input image patches. + class_embedding: Embedding that is concatenated to the sequence for classification tasks. + layernorm_pre: Layer normalization applied before feeding inputs into the transformer encoders. + layernorm_post: Layer normalization applied after processing through the transformer layers. + transformer: Transformer responsible for capturing local spatial relationships in the image. + global_transformer: Transformer focused on global context and capturing long-range dependencies within the image. + """ + + gated_positional_embedding: PrecomputedPositionEmbedding + pre_tile_positional_embedding: PrecomputedAspectRatioEmbedding + post_tile_positional_embedding: PrecomputedAspectRatioEmbedding + patch_embedding: VisionConv2D + class_embedding: TensorValueLike + layernorm_pre: LayerNorm + layernorm_post: LayerNorm + transformer: VisionEncoder + global_transformer: VisionEncoder + dtype: DType + intermediate_layers_indices: list[int] + num_patches: int + + def apply_class_embedding(self, hidden_state: TensorValue) -> TensorValue: + """ + Adds a learnable class token embedding to the sequence of patch embeddings for a vision transformer. + + This function is responsible for prepending a class token to the sequence of image patch embeddings. + The class token is a learnable parameter that captures global information from the image through + the self-attention mechanism. After processing through the transformer layers, the class token + serves as a summary representation of the entire image, typically used for classification tasks. + + Args: + embedding_sequence (TensorValue): A tensor representing the sequence of embedded image patches. + Shape: (batch_size, num_patches, embedding_dim) + + Returns: + TensorValue: A tensor with the class token prepended to the sequence of patch embeddings. + Shape: (batch_size, num_patches + 1, embedding_dim) + The first token in the sequence is the class token, followed by the image patch embeddings. + + Example: + >>> class_token = model.apply_class_embedding(patch_embeddings) + >>> # class_token now holds the class embedding prepended to the patch embeddings + """ + batch_size, _, hidden_size = hidden_state.shape + # This was a reshape in torch reference implementation but we need to + # broadcast this into the right shapes. + class_embedding = TensorValue(self.class_embedding) + + class_embedding = class_embedding.broadcast_to( + (batch_size, 1, hidden_size) + ) + return ops.concat((class_embedding, hidden_state), axis=1) + + def _prepare_aspect_ratio_attention_mask( + self, + aspect_ratio_mask: TensorValue, + num_patches: int, + target_length: int, + dtype: DType, + ) -> TensorValue: + # Expand aspect ratio mask to target_length + batch_size, max_num_tiles = aspect_ratio_mask.shape + attention_mask = aspect_ratio_mask.reshape( + (batch_size, max_num_tiles, 1, 1) + ).cast(dtype) # (1, 4, 1, 1) + # attention_shape (1, 4, 1, 1) -> (1, 4, 1032, 1) + attention_mask = ops.tile(attention_mask, (1, 1, target_length, 1)) + + # Mask padding patches + pad_patches = target_length - num_patches + + # The snippet below is a workaround for + # attention_mask[:, :, 0 - pad_patches :] = 0 + valid_mask = attention_mask[:, :, :-pad_patches, :] + zero_pad = ops.constant(0, dtype).broadcast_to( + (batch_size, max_num_tiles, pad_patches, attention_mask.shape[-1]) + ) + attention_mask = ops.concat((valid_mask, zero_pad), axis=2) + + # Invert the mask (0 -> 1, 1 -> 0) + attention_mask = 1 - attention_mask + + # Reshape to 2D and create 4D attention mask + # (batch_size, 1, max_num_tiles * target_length, max_num_tiles * target_length) + attention_mask = attention_mask.reshape( + (batch_size, max_num_tiles * target_length, 1) + ) + + # TODO: Hardcoded for now. Reference implementation uses torch.finfo(torch.bfloat16).min + bfloat_dtype_min_val = -3.3895313892515355e38 + # Perform outer product by broadcasting elementwise multiplication. + attention_mask = ( + attention_mask + * attention_mask.reshape( + (batch_size, 1, max_num_tiles * target_length) + ) + ) * bfloat_dtype_min_val + + # before unsqueeze: attention_mask shape: (1, 4128, 4128) + return ops.unsqueeze(attention_mask, axis=1) + + def _manual_constant_pad_4d( + self, + dtype: DType, + input_tensor, + pad: tuple[int, int, int, int], + value=0, + ) -> TensorValue: + """ + Manually pads a 4D tensor (batch of images) with constant values. + + Args: + input_tensor (TensorValue): The input 4D tensor (batch_size, channels, height, width). + pad (tuple): Tuple of the form (left, right, top, bottom) specifying padding sizes. + value (float): The value to pad with. + + Returns: + TensorValue: Padded tensor. + """ + left, right, top, bottom = pad + batch_size, channels, height, width = input_tensor.shape + + # Compute new height and width after padding + new_height = height + top + bottom + new_width = width + left + right + + padded_tensor = ops.constant(value, dtype).broadcast_to( + (batch_size, channels, new_height, new_width) + ) + + # Insert the original tensor into the center of the padded tensor + # The code snippet below is a workaround for: + # padded_tensor[ + # :, :, top : top + height, left : left + width + # ] = input_tensor + + # Slice regions along height (dim=2) + # Unchanged region above + top_region = padded_tensor[:, :, :top, :] + # Unchanged region below + bottom_region = padded_tensor[:, :, top + height.dim :, :] + + # Slice regions along width (dim=3) + # Unchanged region to the left + left_region = padded_tensor[:, :, top : top + height.dim, :left] + width_tuple: tuple[TensorValue, ...] = (left_region, input_tensor) + if left > 0: + # Unchanged region to the right + right_region = padded_tensor[ + :, :, top : top + height.dim, left + width.dim : + ] + width_tuple += (right_region,) + + # Concatenate along width (axis=3) + middle_region = ops.concat(width_tuple, axis=3) + + # Concatenate along height (axis=2) + updated_padded_tensor = ops.concat( + (top_region, middle_region, bottom_region), axis=2 + ) + + return updated_padded_tensor + + def __call__( + self, + pixel_values: TensorValue, + aspect_ratio_ids: TensorValue, + aspect_ratio_mask: TensorValue, + ) -> tuple[TensorValue, TensorValue | None, TensorValue | None]: + ( + batch_size, + num_concurrent_media, + num_tiles, + height, + width, + num_channels, + ) = pixel_values.shape + + # Pixel values isn't always guaranteed to be the same dtype as configured + # at the pipeline config level. We insert an explicit cast here to account + # for it. + pixel_values = ops.cast(pixel_values, self.dtype) + + pixel_values = pixel_values.reshape( + ( + batch_size * num_concurrent_media * num_tiles, + height, + width, + num_channels, + ) + ) + + aspect_ratio_ids = aspect_ratio_ids.reshape( + (batch_size * num_concurrent_media, -1) + ) + + # Patch embedding + patch_embeds = self.patch_embedding(pixel_values) + + # Permute it back to original dim of (4, 1280, 32, 32) + patch_embeds = patch_embeds.permute([0, 3, 1, 2]) + + hidden_state = patch_embeds.flatten(2).transpose(1, 2) + + # Tile embeddings + _, num_patches, dim = hidden_state.shape + + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media, num_tiles, -1, dim) + ) + + hidden_state = self.pre_tile_positional_embedding( + hidden_state, aspect_ratio_ids + ) + + # Add cls token + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media * num_tiles, num_patches, dim) + ) + hidden_state = self.apply_class_embedding(hidden_state) + num_patches += 1 + + # Position embeddings + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media, num_tiles, num_patches, dim) + ) + hidden_state = self.gated_positional_embedding( + hidden_state, aspect_ratio_ids + ) + + hidden_state = self.layernorm_pre(hidden_state) + + # Compute the number of tokens to pad + curr_num_patches = StaticDim(hidden_state.shape[-2]).dim + num_padding_patches = (8 - (curr_num_patches % 8)) % 8 + # Compute padding tuple for pad function + padding = ( + 0, + 0, + 0, + num_padding_patches, + ) # (pad_left, pad_right, pad_left for dim -2, pad_right for dim -2) + # Pad the tensor + hidden_state = self._manual_constant_pad_4d( + dtype=self.dtype, + input_tensor=hidden_state, + pad=padding, + value=0, + ) + + slice_index = -num_padding_patches if num_padding_patches > 0 else None + + # Prepare attention mask + attention_mask = aspect_ratio_mask.reshape( + (batch_size * num_concurrent_media, -1) + ) # (1, 4) + + attention_mask = self._prepare_aspect_ratio_attention_mask( + aspect_ratio_mask=attention_mask, + num_patches=self.num_patches, + target_length=StaticDim(hidden_state.shape[2]).dim, + dtype=self.dtype, + ) + + # Apply encoder + hidden_state = hidden_state.reshape( + (batch_size * num_concurrent_media, -1, dim) + ) + + # hidden_state: 1, 4128, 1280 + # attention_mask: 1, 1, 4128, 4128 + + hidden_state, all_intermediate_hidden_states = self.transformer( + hidden_state, + attention_mask=attention_mask, + output_hidden_states=True, + ) + assert all_intermediate_hidden_states is not None, ( + "expect intermediate hidden states output" + ) + + hidden_state = self.layernorm_post(hidden_state) + + # Apply global encoder + hidden_state = hidden_state.reshape( + ( + batch_size * num_concurrent_media, # 1 + num_tiles, # 4 + num_patches + num_padding_patches, # 1025 + 7 = 1032 + dim, + ) + ) + hidden_state = self.post_tile_positional_embedding( + hidden_state, aspect_ratio_ids + ) + hidden_state = hidden_state.reshape( + ( + batch_size * num_concurrent_media, + num_tiles * (num_patches + num_padding_patches), + dim, + ) + ) + + global_output = self.global_transformer( + hidden_state, + attention_mask=attention_mask, + output_hidden_states=False, + ) + hidden_state = global_output[0] + + # Remove padding from hidden state. + hidden_state = hidden_state.reshape( + ( + batch_size * num_concurrent_media, # 1 + num_tiles, # 4 + num_patches + num_padding_patches, # 1025 + 7 = 1032 + dim, + ) + ) + hidden_state = hidden_state[:, :, :slice_index] + hidden_state = hidden_state.reshape( + (batch_size, num_concurrent_media, num_tiles, num_patches, dim) + ) + + # Collect intermediate layer outputs from encoder output. + intermediate_hidden_states = ops.stack( + all_intermediate_hidden_states, axis=-1 + ) + + # These two operations are similar to: + # `intermediate_hidden_states + # = intermediate_hidden_states[..., self.intermediate_layers_indices]` + # We don't currently support slicing based on a provided list of indices + # yet. + selected_hidden_states_list = [ + intermediate_hidden_states[:, :, :, idx] + for idx in self.intermediate_layers_indices + ] + intermediate_hidden_states = ops.stack( + selected_hidden_states_list, axis=-1 + ) + + # Remove padding from intermediate hidden states. + # ('batch_size' * 'num_concurrent_media', 4128, 1280, 5) + intermediate_hidden_states = intermediate_hidden_states.reshape( + ( + Dim(batch_size) * num_concurrent_media, # 1 + num_tiles, # 4 + num_patches + num_padding_patches, # 1025 + 7 = 1032 + dim * len(self.intermediate_layers_indices), + ) + ) + + # (1, 4, 1032, 6400) -> (1, 4, 1025, 6400) + intermediate_hidden_states = intermediate_hidden_states[ + :, :, :slice_index + ] + + intermediate_hidden_states = intermediate_hidden_states.reshape( + ( + batch_size, + num_concurrent_media, + num_tiles, + num_patches, + dim * len(self.intermediate_layers_indices), + ) + ) + + # Concatenate final hidden state and intermediate hidden states. + hidden_state = ops.concat( + (hidden_state, intermediate_hidden_states), axis=-1 + ) + + # output_attentions: False, output_hidden_states: False in reference + # implementation, so these are just returned as `None`s. + return ( + hidden_state, # "last_hidden_state" + None, # "hidden_states" + None, # "attentions" + ) + + +def instantiate_vision_model( + dtype: DType, + image_size: int, + patch_size: int, + supported_aspect_ratios: list[list[int]], + hidden_size: int, + max_num_tiles: int, + num_channels: int, + norm_eps: float, + attention_heads: int, + num_hidden_layers: int, + intermediate_size: int, + num_global_layers: int, + intermediate_layers_indices: list[int], + weights: Weights, +) -> VisionModel: + # Shared variables. + num_patches = (image_size // patch_size) ** 2 + 1 + max_aspect_ratio_id = (len(supported_aspect_ratios)) + 1 + + gated_positional_embedding = PrecomputedPositionEmbedding( + image_size=image_size, + patch_size=patch_size, + hidden_size=hidden_size, + max_num_tiles=max_num_tiles, + gate=weights.vision_model.gated_positional_embedding.gate.allocate( + dtype, [1] + ), + embedding=weights.vision_model.gated_positional_embedding.embedding.allocate( + dtype, + [ + num_patches, + hidden_size, + ], + ), + tile_embedding=Embedding( + weights.vision_model.gated_positional_embedding.tile_embedding.weight.allocate( + dtype, + [ + max_aspect_ratio_id, + max_num_tiles * num_patches * hidden_size, + ], + ), + ), + ) + + pre_tile_positional_embedding = PrecomputedAspectRatioEmbedding( + max_num_tiles=max_num_tiles, + hidden_size=hidden_size, + gate=weights.vision_model.pre_tile_positional_embedding.gate.allocate( + dtype, [1] + ), + embedding=Embedding( + weights.vision_model.pre_tile_positional_embedding.embedding.weight.allocate( + dtype, + [max_aspect_ratio_id, max_num_tiles * hidden_size], + ), + ), + is_gated=True, + ) + + post_tile_positional_embedding = PrecomputedAspectRatioEmbedding( + max_num_tiles=max_num_tiles, + hidden_size=hidden_size, + gate=weights.vision_model.post_tile_positional_embedding.gate.allocate( + dtype, [1] + ), + embedding=Embedding( + weights.vision_model.post_tile_positional_embedding.embedding.weight.allocate( + dtype, + [ + max_aspect_ratio_id, + max_num_tiles * hidden_size, + ], + ), + ), + is_gated=True, + ) + + # patch_embedding filter has a shape of (1280, 3, 14, 14). + patch_embedding = VisionConv2D( + filter=weights.vision_model.patch_embedding.weight.allocate( + dtype, + [hidden_size, num_channels, patch_size, patch_size], + ), + stride=patch_size, + padding=(0, 0, 0, 0), + bias=None, + ) + + class_embedding = weights.vision_model.class_embedding.allocate( + dtype, + [hidden_size], + ) + + layernorm_pre = LayerNorm( + weights.vision_model.layernorm_pre.weight.allocate( + dtype, [hidden_size] + ), + bias=weights.vision_model.layernorm_pre.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ) + + layernorm_post = LayerNorm( + weights.vision_model.layernorm_post.weight.allocate( + dtype, [hidden_size] + ), + bias=weights.vision_model.layernorm_post.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ) + + transformer_encoder_layers: list[VisionEncoderLayer] = [] + + head_dim = hidden_size // attention_heads + + for index in range(num_hidden_layers): + curr_layer_weight = weights.vision_model.transformer.layers[index] + transformer_encoder_layers.append( + VisionEncoderLayer( + mlp=MLP( + Linear( + curr_layer_weight.mlp.fc1.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=curr_layer_weight.mlp.fc1.bias.allocate( + dtype, [intermediate_size] + ), + ), + Linear( + curr_layer_weight.mlp.fc2.weight.allocate( + dtype, + [hidden_size, intermediate_size], + ), + bias=curr_layer_weight.mlp.fc2.bias.allocate( + dtype, [hidden_size] + ), + ), + ), + input_layernorm=LayerNorm( + curr_layer_weight.input_layernorm.weight.allocate( + dtype, [hidden_size] + ), + bias=curr_layer_weight.input_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + post_attention_layernorm=LayerNorm( + curr_layer_weight.post_attention_layernorm.weight.allocate( + dtype, [hidden_size] + ), + bias=curr_layer_weight.post_attention_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + self_attn=Attention( + n_heads=attention_heads, + head_dim=head_dim, + wk=Linear( + curr_layer_weight.self_attn.k_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + wv=Linear( + curr_layer_weight.self_attn.v_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + wq=Linear( + curr_layer_weight.self_attn.q_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + wo=Linear( + curr_layer_weight.self_attn.o_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + ), + is_gated=False, + gate_attn=None, + gate_ffn=None, + ) + ) + transformer = VisionEncoder(transformer_encoder_layers) + + global_transformer_layers: list[VisionEncoderLayer] = [] + + for index in range(num_global_layers): + curr_layer_weight = weights.vision_model.global_transformer.layers[ + index + ] + + global_transformer_layers.append( + VisionEncoderLayer( + mlp=MLP( + Linear( + curr_layer_weight.mlp.fc1.weight.allocate( + dtype, + [intermediate_size, hidden_size], + ), + bias=curr_layer_weight.mlp.fc1.bias.allocate( + dtype, [intermediate_size] + ), + ), + Linear( + curr_layer_weight.mlp.fc2.weight.allocate( + dtype, + [hidden_size, intermediate_size], + ), + bias=curr_layer_weight.mlp.fc2.bias.allocate( + dtype, [hidden_size] + ), + ), + ), + input_layernorm=LayerNorm( + curr_layer_weight.input_layernorm.weight.allocate( + dtype, [hidden_size] + ), + bias=curr_layer_weight.input_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + post_attention_layernorm=LayerNorm( + curr_layer_weight.post_attention_layernorm.weight.allocate( + dtype, [hidden_size] + ), + curr_layer_weight.post_attention_layernorm.bias.allocate( + dtype, [hidden_size] + ), + eps=norm_eps, + ), + self_attn=Attention( + n_heads=attention_heads, + head_dim=head_dim, + wk=Linear( + curr_layer_weight.self_attn.k_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + wv=Linear( + curr_layer_weight.self_attn.v_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + wq=Linear( + curr_layer_weight.self_attn.q_proj.weight.allocate( + dtype, + [hidden_size, attention_heads * head_dim], + ), + bias=None, + ), + wo=Linear( + curr_layer_weight.self_attn.o_proj.weight.allocate( + dtype, + [attention_heads * head_dim, hidden_size], + ), + bias=None, + ), + ), + is_gated=True, + gate_attn=curr_layer_weight.gate_attn.allocate(dtype, [1]), + gate_ffn=curr_layer_weight.gate_ffn.allocate(dtype, [1]), + ) + ) + global_transformer = VisionEncoder(global_transformer_layers) + + return VisionModel( + gated_positional_embedding=gated_positional_embedding, + pre_tile_positional_embedding=pre_tile_positional_embedding, + post_tile_positional_embedding=post_tile_positional_embedding, + patch_embedding=patch_embedding, + class_embedding=class_embedding, + layernorm_pre=layernorm_pre, + layernorm_post=layernorm_post, + transformer=transformer, + global_transformer=global_transformer, + dtype=dtype, + intermediate_layers_indices=intermediate_layers_indices, + num_patches=(image_size // patch_size) ** 2 + 1, + ) diff --git a/src/max/pipelines/architectures/mistral/__init__.py b/src/max/pipelines/architectures/mistral/__init__.py new file mode 100644 index 0000000000..ca84b22cc4 --- /dev/null +++ b/src/max/pipelines/architectures/mistral/__init__.py @@ -0,0 +1,19 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import PIPELINE_REGISTRY + +from .arch import mistral_arch +from .model import MistralModel + +__all__ = ["MistralModel", "mistral_arch"] diff --git a/src/max/pipelines/architectures/mistral/arch.py b/src/max/pipelines/architectures/mistral/arch.py new file mode 100644 index 0000000000..fecc610b70 --- /dev/null +++ b/src/max/pipelines/architectures/mistral/arch.py @@ -0,0 +1,36 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .model import MistralModel + +mistral_arch = SupportedArchitecture( + name="MistralForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["mistralai/Mistral-Nemo-Instruct-2407"], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.bfloat16: [KVCacheStrategy.CONTINUOUS] + }, + pipeline_model=MistralModel, + tokenizer=TextTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/mistral/graph.py b/src/max/pipelines/architectures/mistral/graph.py new file mode 100644 index 0000000000..57056f8fcd --- /dev/null +++ b/src/max/pipelines/architectures/mistral/graph.py @@ -0,0 +1,253 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Mistral model via Graph API from Safetensor weights.""" + +import math + +from max.dtype import DType +from max.graph import Graph, TensorType, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + KVCacheManager, + KVCacheParams, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + Transformer, + TransformerBlock, +) + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return MLP( + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.gate_proj, + ), + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.down_proj, + ), + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.up_proj, + ), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None) + ) + + +def rms_norm(dims: int, eps: float, weights: SafetensorWeights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.bfloat16, [dims]), eps) + + +def embedding( + params: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: SafetensorWeights, +): + return Embedding( + weights.weight.allocate( + params.dtype, + [vocab_size, hidden_dim], + ) + ) + + +def _attention_opaque( + kv_params: KVCacheParams, + params: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: SafetensorWeights, + layer_idx: int, +): + kv_weight_dim = ( + params.huggingface_config.head_dim + * params.huggingface_config.num_key_value_heads + ) + + wq = weights.self_attn.q_proj.weight.allocate( + params.dtype, + [ + params.huggingface_config.num_attention_heads + * params.huggingface_config.head_dim, + params.huggingface_config.hidden_size, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.hidden_size], + ) + wv = weights.self_attn.v_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.hidden_size], + ) + wqkv = ops.concat((wq, wk, wv)) + + return AttentionWithRope( + n_heads=params.huggingface_config.num_attention_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=linear( + params.dtype, + params.huggingface_config.hidden_size, + params.huggingface_config.num_attention_heads + * params.huggingface_config.head_dim, + weights.self_attn.o_proj, + ), + rope=rope, + layer_idx=layer_idx, # type: ignore + scale=math.sqrt(1 / kv_params.head_dim), + ) + + +def _transformer( + graph: Graph, + params: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +): + with graph: + rope = OptimizedRotaryEmbedding( + dim=params.huggingface_config.num_attention_heads + * params.huggingface_config.head_dim, + n_heads=params.huggingface_config.num_attention_heads, + theta=params.huggingface_config.rope_theta, + max_seq_len=max_seq_len, + rope_scaling=None, + interleaved=False, + ) + + layers = [ + TransformerBlock( + attention=_attention_opaque( + kv_params, + params, + rope, + weights.model.layers[i], + layer_idx=ops.constant(i, DType.uint32), # type: ignore + ), + mlp=feed_forward( + params.dtype, + params.huggingface_config.hidden_size, + params.huggingface_config.intermediate_size, + weights.model.layers[i].mlp, + ), + attention_norm=rms_norm( + params.huggingface_config.hidden_size, + params.huggingface_config.rms_norm_eps, + weights.model.layers[i].input_layernorm, + ), + mlp_norm=rms_norm( + params.huggingface_config.hidden_size, + params.huggingface_config.rms_norm_eps, + weights.model.layers[i].post_attention_layernorm, + ), + ) + for i in range(params.huggingface_config.num_hidden_layers) + ] + + embedding_layer = embedding( + params, + params.huggingface_config.vocab_size, + params.huggingface_config.hidden_size, + weights.model.embed_tokens, + ) + + output = linear( + params.dtype, + params.huggingface_config.vocab_size, + params.huggingface_config.hidden_size, + weights.lm_head, + ) + + kv_collection_cls = FetchContinuousBatchingKVCacheCollection + + return Transformer( + dim=params.huggingface_config.hidden_size, + n_heads=params.huggingface_config.num_attention_heads, + layers=layers, + norm=rms_norm( + params.huggingface_config.hidden_size, + params.huggingface_config.rms_norm_eps, + weights.model.norm, + ), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection_cls(kv_params), + ) + + +def _build_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + tokens_type = TensorType(DType.int64, shape=["total_seq_len"]) + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + + kv_cache_args = kv_manager.input_symbols()[0] + + with Graph( + "mistral", + input_types=[ + tokens_type, + input_row_offsets_type, + *kv_cache_args, + ], + ) as graph: + model = _transformer( + graph=graph, + params=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + tokens, input_row_offsets, *kv_cache = graph.inputs + outputs = model(tokens, kv_cache, input_row_offsets=input_row_offsets) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/mistral/model.py b/src/max/pipelines/architectures/mistral/model.py new file mode 100644 index 0000000000..357cd5b132 --- /dev/null +++ b/src/max/pipelines/architectures/mistral/model.py @@ -0,0 +1,255 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +from typing import Sequence, cast + +import numpy as np +from max.driver import Device, Tensor +from max.engine import InferenceSession, Model +from max.graph.weights import SafetensorWeights +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) + +from .graph import _build_graph + +logger = logging.getLogger("max.pipelines") + + +class MistralInputs(ModelInputs): + """A class representing inputs for the Mistral model. + + This class encapsulates the input tensors required for the Mistral model execution: + - input_tokens: A tensor containing the input token IDs + - input_row_offsets: A tensor containing the offsets for each row in the ragged input sequence + """ + + input_tokens: Tensor + input_row_offsets: Tensor + + def __init__( + self, + input_tokens: Tensor, + input_row_offsets: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> None: + self.input_tokens = input_tokens + self.input_row_offsets = input_row_offsets + self.kv_cache_inputs = kv_cache_inputs + + +class MistralModel(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def execute(self, model_inputs: ModelInputs) -> ModelOutputs: + """Runs the graph.""" + model_inputs = cast(MistralInputs, model_inputs) + assert model_inputs.kv_cache_inputs is not None, ( + "Mistral has KV cache inputs, but none were provided" + ) + model_outputs = self.model.execute( + model_inputs.input_tokens, + model_inputs.input_row_offsets, + *model_inputs.kv_cache_inputs, + copy_inputs_to_device=False, + ) + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> MistralInputs: + # Get tokens and seq ids + tokens = [ctx.next_tokens for ctx in context_batch] + + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + next_tokens_batch = np.concatenate(tokens) + next_tokens_batch = Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ) + + return MistralInputs( + input_tokens=next_tokens_batch, + input_row_offsets=input_row_offsets, + kv_cache_inputs=kv_cache_inputs, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> MistralInputs: + prev_model_inputs = cast(MistralInputs, prev_model_inputs) + row_offsets_size = prev_model_inputs.input_row_offsets.shape[0] + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + return MistralInputs( + input_tokens=next_tokens, + input_row_offsets=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, + ) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + page_size=pipeline_config.kv_cache_page_size, + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_key_value_heads, + head_dim=pipeline_config.huggingface_config.head_dim, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Mistral, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + assert self.pipeline_config.devices, ( + "devices must be provided to load kv manager." + ) + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.num_hidden_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + assert devices, "devices must be provided to estimate kv cache size." + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.num_hidden_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model(self, session: InferenceSession) -> Model: + if self.pipeline_config.enable_echo: + msg = "Mistral model does not currently implement enable echo." + raise ValueError(msg) + + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + self._weights = self.pipeline_config.load_weights() + + if not isinstance(self._weights, SafetensorWeights): + msg = "only safetensors weights are currently supported in Mistral models." + raise ValueError(msg) + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized graph. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + logger.info( + "Loading serialized model from ", serialized_path, "..." + ) + return session.load( + serialized_path, + weights_registry=weights_registry, + ) + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = _build_graph( + pipeline_config=self.pipeline_config, + weights=self._weights, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + kv_params=self.get_kv_params(self.pipeline_config), + kv_manager=self.kv_manager, + ) + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model diff --git a/src/max/pipelines/architectures/mpnet/__init__.py b/src/max/pipelines/architectures/mpnet/__init__.py new file mode 100644 index 0000000000..b1252f1b47 --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import mpnet_arch + +__all__ = ["mpnet_arch"] diff --git a/src/max/pipelines/architectures/mpnet/arch.py b/src/max/pipelines/architectures/mpnet/arch.py new file mode 100644 index 0000000000..9c124954a6 --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/arch.py @@ -0,0 +1,38 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) + +from .model import MPNetPipelineModel + +mpnet_arch = SupportedArchitecture( + name="MPNetForMaskedLM", + task=PipelineTask.EMBEDDINGS_GENERATION, + example_repo_ids=[ + "sentence-transformers/all-mpnet-base-v2", + ], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [], + SupportedEncoding.bfloat16: [], + }, + pipeline_model=MPNetPipelineModel, + tokenizer=TextTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/mpnet/graph.py b/src/max/pipelines/architectures/mpnet/graph.py new file mode 100644 index 0000000000..89173e9064 --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/graph.py @@ -0,0 +1,493 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +from __future__ import annotations + +import math + +import numpy as np +from max.dtype import DType +from max.graph import Graph, TensorType, TensorValue, ops +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import Weights +from max.pipelines import PipelineConfig +from max.pipelines.nn import Embedding, LayerNorm, Linear, Sequential +from max.pipelines.nn.layer import Layer + + +def _quantization_encoding( + pipeline_config: PipelineConfig, +) -> QuantizationEncoding | None: + if supported_encoding := pipeline_config.quantization_encoding: + return supported_encoding.quantization_encoding + return None + + +class MPNetEmbeddings(Layer): + """An embeddings layer that combines the tokens embeddings and positions + embeddings.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = self.config = pipeline_config.huggingface_config + self.word_embeddings = Embedding( + weights.word_embeddings.weight.allocate( + pipeline_config.dtype, + [ + config.vocab_size, + config.hidden_size, + ], + _quantization_encoding(pipeline_config), + ) + ) + self.position_embeddings = Embedding( + weights.position_embeddings.weight.allocate( + pipeline_config.dtype, + [ + config.max_position_embeddings, + config.hidden_size, + ], + ) + ) + self.layer_norm = LayerNorm( + weight=weights.LayerNorm.weight.allocate( + pipeline_config.dtype, + [config.hidden_size], + ), + bias=weights.LayerNorm.bias.allocate( + pipeline_config.dtype, [config.hidden_size] + ), + eps=config.layer_norm_eps, + ) + self.position_ids = weights.position_ids.allocate( + DType.int64, + [ + 1, + config.max_position_embeddings, + ], + ) + + def __call__( + self, + input_ids: TensorValue, + ) -> TensorValue: + position_ids = _create_position_ids_from_input_ids( + input_ids, self.config.pad_token_id + ) + inputs_embeds = self.word_embeddings(input_ids) + position_embeddings = self.position_embeddings(position_ids) + embeddings = inputs_embeds + position_embeddings + return self.layer_norm(embeddings) + + +def _create_position_ids_from_input_ids( + input_ids: TensorValue, padding_idx: int +) -> TensorValue: + mask = (input_ids != padding_idx).cast(DType.int64) + incremental_indices = ops.cumsum(mask, axis=1) * mask + return incremental_indices + padding_idx + + +class MPNetSelfAttention(Layer): + """Self-attention layer with position compensation.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.num_attention_heads = config.num_attention_heads + self.attention_head_size = int( + config.hidden_size / config.num_attention_heads + ) + self.all_head_size = self.num_attention_heads * self.attention_head_size + + self.q = Linear( + weights.q.weight.allocate( + pipeline_config.dtype, + [self.all_head_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.q.bias.allocate( + pipeline_config.dtype, + [self.all_head_size], + _quantization_encoding(pipeline_config), + ), + ) + self.k = Linear( + weights.k.weight.allocate( + pipeline_config.dtype, + [self.all_head_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.k.bias.allocate( + pipeline_config.dtype, + [self.all_head_size], + _quantization_encoding(pipeline_config), + ), + ) + self.v = Linear( + weights.v.weight.allocate( + pipeline_config.dtype, + [self.all_head_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.v.bias.allocate( + pipeline_config.dtype, + [self.all_head_size], + _quantization_encoding(pipeline_config), + ), + ) + self.o = Linear( + weights.o.weight.allocate( + pipeline_config.dtype, + [config.hidden_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.o.bias.allocate( + pipeline_config.dtype, + [config.hidden_size], + _quantization_encoding(pipeline_config), + ), + ) + + def transpose_for_scores(self, x: TensorValue) -> TensorValue: + new_x_shape = x.shape[:-1] + [ + self.num_attention_heads, + self.attention_head_size, + ] + x = ops.reshape(x, new_x_shape) + return ops.permute(x, [0, 2, 1, 3]) + + def __call__( + self, + hidden_states, + attention_mask: TensorValue, + position_bias: TensorValue, + ) -> TensorValue: + q = self.q(hidden_states) + k = self.k(hidden_states) + v = self.v(hidden_states) + + q = self.transpose_for_scores(q) + k = self.transpose_for_scores(k) + v = self.transpose_for_scores(v) + + # Take the dot product between "query" and "key" to get the raw attention scores. + attention_scores = q @ k.transpose(-1, -2) + attention_scores = attention_scores / math.sqrt( + self.attention_head_size + ) + + # Apply relative position embedding (precomputed in MPNetEncoder). + attention_scores += position_bias + + attention_scores = attention_scores + attention_mask + + # Normalize the attention scores to probabilities. + attention_probs = ops.softmax(attention_scores) + + c = attention_probs @ v + + c = ops.permute(c, [0, 2, 1, 3]) + new_c_shape = c.shape[:-2] + [self.all_head_size] + c = ops.reshape(c, new_c_shape) + + return self.o(c) + + +class MPNetAttention(Layer): + """Container for the attention and attention output layer norm layers.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.attn = MPNetSelfAttention(pipeline_config, weights.attn) + self.layer_norm = LayerNorm( + weight=weights.LayerNorm.weight.allocate( + DType.float32, [config.hidden_size] + ), + bias=weights.LayerNorm.bias.allocate( + DType.float32, [config.hidden_size] + ), + eps=config.layer_norm_eps, + ) + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + position_bias: TensorValue, + ) -> TensorValue: + attn_output = self.attn( + hidden_states, + attention_mask, + position_bias, + ) + return self.layer_norm(attn_output + hidden_states) + + +_ACTIVATIONS = { + "gelu": ops.gelu, + "relu": ops.relu, + "silu": ops.silu, + "sigmoid": ops.sigmoid, + "tanh": ops.tanh, +} + + +class MPNetIntermediate(Layer): + """Fully connected layer with an activation function.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.dense = Linear( + weights.dense.weight.allocate( + pipeline_config.dtype, + [config.intermediate_size, config.hidden_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.dense.bias.allocate( + pipeline_config.dtype, + [config.intermediate_size], + _quantization_encoding(pipeline_config), + ), + ) + self.intermediate_act_fn = _ACTIVATIONS[config.hidden_act] + + def __call__(self, hidden_states: TensorValue) -> TensorValue: + hidden_states = self.dense(hidden_states) + hidden_states = self.intermediate_act_fn(hidden_states) + return hidden_states + + +class MPNetOutput(Layer): + """Layer that combines the outputs of the intermediate and attention layers.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = pipeline_config.huggingface_config + self.dense = Linear( + weights.dense.weight.allocate( + pipeline_config.dtype, + [config.hidden_size, config.intermediate_size], + _quantization_encoding(pipeline_config), + ), + bias=weights.dense.bias.allocate( + pipeline_config.dtype, + [config.hidden_size], + _quantization_encoding(pipeline_config), + ), + ) + self.layer_norm = LayerNorm( + weight=weights.LayerNorm.weight.allocate( + DType.float32, [config.hidden_size] + ), + bias=weights.LayerNorm.bias.allocate( + DType.float32, [config.hidden_size] + ), + eps=config.layer_norm_eps, + ) + + def __call__( + self, hidden_states: TensorValue, input_tensor: TensorValue + ) -> TensorValue: + hidden_states = self.dense(hidden_states) + hidden_states = self.layer_norm(hidden_states + input_tensor) + return hidden_states + + +class MPNetLayer(Layer): + """An Encoder layer block.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + self.attention = MPNetAttention(pipeline_config, weights.attention) + self.intermediate = MPNetIntermediate( + pipeline_config, weights.intermediate + ) + self.output = MPNetOutput(pipeline_config, weights.output) + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + position_bias: TensorValue, + ) -> TensorValue: + attention_output = self.attention( + hidden_states, + attention_mask, + position_bias=position_bias, + ) + intermediate_output = self.intermediate(attention_output) + layer_output = self.output(intermediate_output, attention_output) + return layer_output + + +class MPNetEncoder(Layer): + """Encoder that contains stacks of MPNetLayers.""" + + def __init__(self, pipeline_config: PipelineConfig, weights: Weights): + config = self.config = pipeline_config.huggingface_config + self.n_heads = config.num_attention_heads + num_hidden_layers = config.num_hidden_layers + self.layer = Sequential( + [ + MPNetLayer(pipeline_config, weights.layer[n]) + for n in range(num_hidden_layers) + ] + ) + self.relative_attention_bias = Embedding( + weights.relative_attention_bias.weight.allocate( + pipeline_config.dtype, + [ + config.relative_attention_num_buckets, + config.num_attention_heads, + ], + ) + ) + self.num_attention_heads = config.num_attention_heads + + def __call__( + self, + hidden_states: TensorValue, + attention_mask: TensorValue, + ) -> TensorValue: + position_bias = self.compute_position_bias(hidden_states) + for layer in self.layer.layers: + hidden_states = layer( + hidden_states, + attention_mask, + position_bias, + ) + return hidden_states + + def compute_position_bias(self, hidden_states: TensorValue) -> TensorValue: + shape = hidden_states.shape + bsz, qlen, klen = shape[0], shape[1], shape[1] + start = ops.constant(0, DType.int64) + step = ops.constant(1, DType.int64) + context_position = ops.range(start, qlen, step, qlen).cast(DType.int64)[ + :, None + ] + memory_position = ops.range(start, klen, step, klen).cast(DType.int64)[ + None, : + ] + relative_position = memory_position - context_position + rp_bucket = self.relative_position_bucket( + relative_position, + num_buckets=self.config.relative_attention_num_buckets, + ) + values = self.relative_attention_bias(rp_bucket) + values = ops.unsqueeze(ops.permute(values, [2, 0, 1]), 0) + values = ops.broadcast_to( + values, + [bsz, self.num_attention_heads, qlen, klen], + ) + return values + + @staticmethod + def relative_position_bucket( + relative_position: TensorValue, num_buckets=32, max_distance=128 + ) -> TensorValue: + n = -relative_position + + num_buckets //= 2 + ret = (n < 0).cast(DType.int64) * num_buckets + n = ops.abs(n) + + max_exact = num_buckets // 2 + is_small = n < max_exact + + val_if_large = max_exact + ops.cast( + ops.log(ops.cast(n, DType.float32) / max_exact) + / math.log(max_distance / max_exact) + * (num_buckets - max_exact), + DType.int64, + ) + + # Roundabout implementation of full_like(val_if_large, num_buckets - 1). + max_bucket = ops.broadcast_to( + ops.constant(num_buckets - 1, DType.int64), val_if_large.shape + ) + + val_if_large = ops.min(val_if_large, max_bucket) + ret += ops.select(is_small, n, val_if_large) + return ret + + +class MPNetModel(Layer): + """The MPNet encoder model. + + Based on the MPNetModel transformers implementation.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + weights: Weights, + ): + self.embeddings = MPNetEmbeddings(pipeline_config, weights.embeddings) + self.encoder = MPNetEncoder(pipeline_config, weights.encoder) + self.pool_outputs = pipeline_config.pool_embeddings + + def __call__( + self, + input_ids: TensorValue, + attention_mask: TensorValue, + ) -> TensorValue: + embedding_output = self.embeddings( + input_ids=input_ids, + ) + extended_attention_mask = ops.reshape( + attention_mask, ("batch_size", 1, 1, "seq_len") + ) + extended_attention_mask = (1 - extended_attention_mask) * ops.constant( + np.finfo(np.float32).min, DType.float32 + ) + encoded_results = self.encoder( + embedding_output, + attention_mask=extended_attention_mask, + ) + if self.pool_outputs: + # Pool the embeddings. + # TODO(KERN-1550): Since GPU can only apply reductions along the + # inner-most dimension, transpose the mask so the seq_len is last. + encoded_results = encoded_results.transpose(1, 2) + input_mask_expanded = ops.broadcast_to( + ops.unsqueeze(attention_mask, 1), + ("batch_size", encoded_results.shape[1], "seq_len"), + ) + input_lengths = ops.max( + ops.sum(input_mask_expanded), ops.constant(1e-9, DType.float32) + ) + pooled_output = ( + ops.sum(encoded_results * input_mask_expanded) / input_lengths + ) + return ops.squeeze(pooled_output, 2) + else: + return encoded_results + + +def build_graph( + pipeline_config: PipelineConfig, + weights: Weights, +) -> Graph: + # Graph input types. + input_ids_type = TensorType(DType.int64, shape=["batch_size", "seq_len"]) + attention_mask_type = TensorType( + DType.float32, shape=["batch_size", "seq_len"] + ) + + mpnet = MPNetModel(pipeline_config, weights) + + # Initialize Graph. + return Graph( + "mpnet", + mpnet, + input_types=[ + input_ids_type, + attention_mask_type, + ], + ) diff --git a/src/max/pipelines/architectures/mpnet/model.py b/src/max/pipelines/architectures/mpnet/model.py new file mode 100644 index 0000000000..7a1df30d8f --- /dev/null +++ b/src/max/pipelines/architectures/mpnet/model.py @@ -0,0 +1,198 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Defines the MPNet pipeline model. + +Implementation is based on MPNetModel from the transformers library. +""" + +from __future__ import annotations + +import logging +import time +from collections.abc import Sequence +from typing import cast + +import numpy as np +from max.driver import Tensor +from max.engine import InferenceSession, Model +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.dataprocessing import collate_batch +from max.pipelines.kv_cache import KVCacheInputs, KVCacheParams + +from .graph import build_graph + +logger = logging.getLogger("max.pipelines") + +PAD_VALUE = 1 + + +class MPNetInputs(ModelInputs): + """A class representing inputs for the MPNet model. + + This class encapsulates the input tensors required for the MPNet model execution: + - next_tokens_batch: A tensor containing the input token IDs + - attention_mask: A tensor containing the extended attention mask + """ + + next_tokens_batch: Tensor + attention_mask: Tensor + + def __init__( + self, + next_tokens_batch: Tensor, + attention_mask: Tensor, + ) -> None: + self.next_tokens_batch = next_tokens_batch + self.attention_mask = attention_mask + # MPNet does not have KV cache inputs. + self.kv_cache_inputs = None + + +class MPNetPipelineModel(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_attention_heads, + head_dim=( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ), + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for MPNet, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def execute(self, model_inputs: ModelInputs) -> ModelOutputs: + model_inputs = cast(MPNetInputs, model_inputs) + model_outputs = self.model.execute( + model_inputs.next_tokens_batch, + model_inputs.attention_mask, + copy_inputs_to_device=False, + ) + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> MPNetInputs: + # Get tokens and seq_ids. + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens for the batch. + pad_value = getattr( + self.pipeline_config.huggingface_config, "pad_token_id", 1 + ) + next_tokens_batch, _ = collate_batch( + tokens, + pad_value=pad_value, + batch_size=len(tokens), + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + + # Compute attention mask. + attention_mask = (next_tokens_batch != pad_value).astype(np.float32) + + return MPNetInputs( + next_tokens_batch=Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ), + attention_mask=Tensor.from_numpy(attention_mask).to( + self.pipeline_config.devices[0] + ), + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> MPNetInputs: + raise NotImplementedError( + "MPNet does not support preparing next tokens inputs." + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Read in weights. + weights = self.pipeline_config.load_weights() + self._weights = weights + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logger.info("Loading serialized model from ", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = build_graph( + self.pipeline_config, + self._weights, + ) + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model diff --git a/src/max/pipelines/architectures/olmo/__init__.py b/src/max/pipelines/architectures/olmo/__init__.py new file mode 100644 index 0000000000..41fbdf80ac --- /dev/null +++ b/src/max/pipelines/architectures/olmo/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import olmo_arch + +__all__ = ["olmo_arch"] diff --git a/src/max/pipelines/architectures/olmo/arch.py b/src/max/pipelines/architectures/olmo/arch.py new file mode 100644 index 0000000000..b6047631c7 --- /dev/null +++ b/src/max/pipelines/architectures/olmo/arch.py @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from .model import OlmoModel + +olmo_arch = SupportedArchitecture( + name="OlmoForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["allenai/OLMo-1B-hf", "allenai/OLMo-1B-0724-hf"], + default_weights_format=WeightsFormat.gguf, + default_encoding=SupportedEncoding.float32, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=OlmoModel, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/olmo/model.py b/src/max/pipelines/architectures/olmo/model.py new file mode 100644 index 0000000000..5abe981ecf --- /dev/null +++ b/src/max/pipelines/architectures/olmo/model.py @@ -0,0 +1,32 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Literal + +from max.engine import InferenceSession +from max.pipelines import PipelineConfig + +from ..llama3.model import LlamaModelBase + + +class OlmoModel(LlamaModelBase): + """Olmo pipeline model implementation.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] = "layer_norm" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) diff --git a/src/max/pipelines/architectures/phi3/__init__.py b/src/max/pipelines/architectures/phi3/__init__.py new file mode 100644 index 0000000000..577e2e1a5b --- /dev/null +++ b/src/max/pipelines/architectures/phi3/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import phi3_arch + +__all__ = ["phi3_arch"] diff --git a/src/max/pipelines/architectures/phi3/arch.py b/src/max/pipelines/architectures/phi3/arch.py new file mode 100644 index 0000000000..ad4bf4a656 --- /dev/null +++ b/src/max/pipelines/architectures/phi3/arch.py @@ -0,0 +1,52 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + RopeType, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from ..llama3 import weight_adapters +from .model import Phi3Model + +phi3_arch = SupportedArchitecture( + name="Phi3ForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["microsoft/phi-4", "microsoft/Phi-3.5-mini-instruct"], + default_weights_format=WeightsFormat.gguf, + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + # KVCacheStrategy.NAIVE, # TODO(kathywu): Support naive caching for phi models + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + # KVCacheStrategy.NAIVE, # TODO(kathywu): Support naive caching for phi models + ], + }, + pipeline_model=Phi3Model, + tokenizer=TextTokenizer, + rope_type=RopeType.normal, + weight_adapters={ + WeightsFormat.safetensors: weight_adapters.convert_safetensor_state_dict, + WeightsFormat.gguf: weight_adapters.convert_gguf_state_dict, + }, +) diff --git a/src/max/pipelines/architectures/phi3/model.py b/src/max/pipelines/architectures/phi3/model.py new file mode 100644 index 0000000000..494e8a53f9 --- /dev/null +++ b/src/max/pipelines/architectures/phi3/model.py @@ -0,0 +1,33 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Literal + +from max.engine import InferenceSession +from max.pipelines import PipelineConfig + +from ..llama3.model import LlamaModelBase + + +class Phi3Model(LlamaModelBase): + """Phi 3 pipeline model implementation.""" + + norm_method: Literal["rms_norm"] | Literal["layer_norm"] = "rms_norm" + """Normalization layer.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) diff --git a/src/max/pipelines/architectures/pixtral/__init__.py b/src/max/pipelines/architectures/pixtral/__init__.py new file mode 100644 index 0000000000..06f1d43e25 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import pixtral_arch + +__all__ = ["pixtral_arch"] diff --git a/src/max/pipelines/architectures/pixtral/arch.py b/src/max/pipelines/architectures/pixtral/arch.py new file mode 100644 index 0000000000..580d90e126 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/arch.py @@ -0,0 +1,39 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextAndVisionTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .pixtral import PixtralModel + +pixtral_arch = SupportedArchitecture( + name="LlavaForConditionalGeneration", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=["mistral-community/pixtral-12b"], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + ], + }, + pipeline_model=PixtralModel, + tokenizer=TextAndVisionTokenizer, + default_weights_format=WeightsFormat.safetensors, +) diff --git a/src/max/pipelines/architectures/pixtral/llava/__init__.py b/src/max/pipelines/architectures/pixtral/llava/__init__.py new file mode 100644 index 0000000000..aae087fcca --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/__init__.py @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Llava Code layer modules.""" diff --git a/src/max/pipelines/architectures/pixtral/llava/llava.py b/src/max/pipelines/architectures/pixtral/llava/llava.py new file mode 100644 index 0000000000..e6c5fe0dd5 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/llava.py @@ -0,0 +1,178 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from dataclasses import dataclass + +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.architectures.pixtral.vision_encoder.vision_encoder import ( + VisionEncoder, +) +from max.pipelines.nn.layer import Layer + +from .llava_decoder import Transformer +from .llava_projector import LlavaMultiModalConnector + + +@dataclass +class LlavaConditionalGeneration(Layer): + """The LLAVA model which consists of a vision encoder and a language model. + + image_token_index: a specific token index used to denote images in input_ids. + """ + + vision_encoder: VisionEncoder + multi_modal_projector: LlavaMultiModalConnector + language_model: Transformer + vocab_size: int + image_token_index: int = 10 + vision_feature_layer: int = -1 + vision_feature_select_strategy: str = "full" + image_seq_length: int = 1 + + # TODO: change pixel_values type to List[TensorValue] to support multiple images. + def __call__( + self, + input_ids: TensorValueLike, + pixel_values: TensorValueLike, + attention_mask: TensorValueLike, + kv_cache_inputs: tuple[ + TensorValue, TensorValue, TensorValue, TensorValue + ], + **kwargs, + ) -> tuple[TensorValue, ...]: + """ + Args: + input_ids (ragged `TensorValue` of shape `(batch_size * sequence_length for each batch)`): + Indices of input sequence tokens in the vocabulary. Can be obtained from language model tokenizer. + input_ids[i] is a sequence of token ids (indices) in sequence i. Expanding inputs for + image tokens in LLaVa should be done in processing. Each image is represented in the + input_ids sequence by a sequence of patches that have index(id) = self.image_token_index. + The maximum number of image tokens in one sequence (prompt) = + (input_ids == self.image_token_index).sum(1).max()) + Padding will be ignored by default should you provide it. + pixel_values (list`TensorValue` of length batch_size + The tensors corresponding to the input image are of shape `(image_height, image_width, num_channels)): + Pixel values can be obtained using ImageProcessor. + """ + # inputs_embeds shape (total_sequence_length=text_and_image_tokens_length for all seqs, + # language_model_hidden_dim) + inputs_embeds = self.language_model.embedding(input_ids) + + # Replace image place-holders in inputs_embeds with image embeddings. + # Obtain image embeddings from the vision encoder and project it to text embeddings space. + # Output shape = (num_images, num_patches_in_image, language_model_hidden_dim) + # TODO(AIPIPE-320): If input pixel_values is a list of images, don't wrap it in a list. + image_embeds = self.multi_modal_projector( + self.vision_encoder( + imgs=[pixel_values], attention_mask=attention_mask + ) + ) + image_embeds = ops.cast(image_embeds, inputs_embeds.dtype) + special_image_mask = ops.broadcast_to( + ops.unsqueeze((input_ids == self.image_token_index), -1), + inputs_embeds.shape, + ) + inputs_embeds = ops.masked_scatter( + inputs_embeds, special_image_mask, image_embeds + ) + + logits = self.language_model(inputs_embeds, kv_cache_inputs, **kwargs) + + return logits + + +@dataclass +class LlavaVisionEncoder(Layer): + """The LLAVA model which consists of a vision encoder and a language model. + + image_token_index: a specific token index used to denote images + """ + + vision_encoder: VisionEncoder + multi_modal_projector: LlavaMultiModalConnector + + # TODO: change pixel_values type to List[TensorValue] to support multiple images. + def __call__( + self, + pixel_values: TensorValueLike, + attention_mask: TensorValueLike, + **kwargs, + ) -> TensorValue: + """ + Args: + pixel_values (list`TensorValue` of length batch_size + The tensors corresponding to the input image are of shape `(image_height, image_width, num_channels)): + Pixel values can be obtained using ImageProcessor. + """ + # Replace image place-holders in inputs_embeds with image embeddings. + # Obtain image embeddings from the vision encoder and project it to text embeddings space. + # Output shape = (num_images, num_patches_in_image, language_model_hidden_dim) + # TODO(AIPIPE-320): If input pixel_values is a list of images, don't wrap it in a list. + return self.multi_modal_projector( + self.vision_encoder( + imgs=[pixel_values], attention_mask=attention_mask + ) + ) + + +@dataclass +class LlavaConditionalGenerationTextOnly(Layer): + """The LLAVA model which consists of a vision encoder and a language model. + + Because flow control is not added to the graph API yet. We have to create 2 llava models. + + image_token_index: a specific token index used to denote images + """ + + language_model: Transformer + vocab_size: int + image_token_index: int = 10 + + def __call__( + self, + input_ids: TensorValueLike, + image_embeds: TensorValue, + kv_cache_inputs: tuple[ + TensorValue, TensorValue, TensorValue, TensorValue + ], + **kwargs, + ) -> tuple[TensorValue, ...]: + """ + Args: + input_ids (ragged `TensorValue` of shape `(batch_size * sequence_length for each batch)`): + Indices of input sequence tokens in the vocabulary. Can be obtained from language model tokenizer. + input_ids[i] is a sequence of token ids (indices) in sequence i. Expanding inputs for + image tokens in LLaVa should be done in processing. Each image is represented in the + input_ids sequence by a sequence of patches that have index(id) = self.image_token_index. + The maximum number of image tokens in one sequence (prompt) = + (input_ids == self.image_token_index).sum(1).max()) + Padding will be ignored by default should you provide it. + inputs_embeds: + Embeddings of pixel_values generated by the vision encoder and projected to the + embedding space of the language model. + """ + # inputs_embeds shape (total_sequence_length=text_and_image_tokens_length for all seqs, + # language_model_hidden_dim) + inputs_embeds = self.language_model.embedding(input_ids) + + image_embeds = ops.cast(image_embeds, inputs_embeds.dtype) + special_image_mask = ops.broadcast_to( + ops.unsqueeze((input_ids == self.image_token_index), -1), + inputs_embeds.shape, + ) + inputs_embeds = ops.masked_scatter( + inputs_embeds, special_image_mask, image_embeds + ) + logits = self.language_model(inputs_embeds, kv_cache_inputs, **kwargs) + + return logits diff --git a/src/max/pipelines/architectures/pixtral/llava/llava_decoder.py b/src/max/pipelines/architectures/pixtral/llava/llava_decoder.py new file mode 100644 index 0000000000..3e4c1c4c8e --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/llava_decoder.py @@ -0,0 +1,128 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from dataclasses import dataclass +from typing import Union + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, +) +from max.pipelines.nn import ( + Embedding, + LayerNorm, + Linear, + RMSNorm, + TransformerBlock, +) +from max.pipelines.nn.layer import Layer + + +@dataclass +class Transformer(Layer): + """Transformer model consisting for TransformerBlock layers. + + The differences between this transformer and the transformer in nn: + + - It takes as input the token embeddings rather than the token ids. + - It skips the embedding generation (first step in nn.Transformer). + + TODO(AIPIPE-273): Once we have mo.if, we can update nn.Transformer + to only generate embeddings if token ids are passed. That would + eliminate the need for this class. + """ + + dim: int + n_heads: int + layers: list[TransformerBlock] + norm: Union[RMSNorm, LayerNorm] + output: Linear + embedding: Embedding + kv_params: KVCacheParams + kv_collection_constructor: Union[ + FetchContinuousBatchingKVCacheCollection, FetchPagedKVCacheCollection + ] + all_logits: bool = False + + def __call__( + self, + embeds: TensorValue, + kv_cache_inputs: tuple[ + TensorValue, TensorValue, TensorValue, TensorValue + ], + **kwargs, + ) -> tuple[TensorValue, ...]: + """Transformer model consisting of TransformerBlock layers. + + Args: + embeds: embeddings of the sequence of text tokens and possibly images. + shape = [batch_size, n_patches, hidden_dim] + kv_cache_inputs: A tuple of 4 tensor values. In the case of paged attention, + (blocks, cache_lengths, lookup_table, is_cache_empty). In the case of + continuous attention, (blocks, cache_lengths, lookup_table, max_lengths). + """ + h = embeds + + # Construct a kv cache for use downstream. + kv_collection = self.kv_collection_constructor(*kv_cache_inputs) + + for _, layer in enumerate(self.layers): + h = layer(h, kv_collection, **kwargs) + + if self.all_logits: + # When echo is enabled, the logits of the input tokens are + # returned. + logits = ops.cast(self.output(self.norm(h)), DType.float32) + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets: TensorValueLike = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + last_token_logits = ops.gather( + logits, last_token_indices, axis=0 + ) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths: TensorValueLike = kwargs["valid_lengths"] + last_token_logits = ops.gather_nd( + logits, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + return (last_token_logits, logits) + else: + # Otherwise, only return the logits for the last non-pad token + # (right-padded). + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + # Should be: last_token = h[last_token_indices] + last_token = ops.gather(h, last_token_indices, axis=0) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths = kwargs["valid_lengths"] + last_token = ops.gather_nd( + h, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + + # Always return float32 logits, no matter the activation type + return ( + ops.cast(self.output(self.norm(last_token)), DType.float32), + ) diff --git a/src/max/pipelines/architectures/pixtral/llava/llava_projector.py b/src/max/pipelines/architectures/pixtral/llava/llava_projector.py new file mode 100644 index 0000000000..c75c0adabd --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/llava/llava_projector.py @@ -0,0 +1,34 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from dataclasses import dataclass + +from max.graph import TensorValue, ops +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.linear import Linear + + +@dataclass +class LlavaMultiModalConnector(Layer): + """ + Simple multi-layer cross-modal connector to connect image features into the + text token embedding space. + Uses Gelu activation function. + """ + + linear_1: Linear + linear_2: Linear + + def __call__(self, x: TensorValue) -> TensorValue: + return self.linear_2(ops.gelu(self.linear_1(x))) diff --git a/src/max/pipelines/architectures/pixtral/model/graph.py b/src/max/pipelines/architectures/pixtral/model/graph.py new file mode 100644 index 0000000000..cebc6bab2a --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/model/graph.py @@ -0,0 +1,311 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.dtype import DType +from max.graph import Graph, TensorType +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import KVCacheManager, KVCacheParams +from max.pipelines.nn import Linear + +from ..llava.llava import ( + LlavaConditionalGeneration, + LlavaConditionalGenerationTextOnly, + LlavaVisionEncoder, +) +from ..llava.llava_projector import LlavaMultiModalConnector +from ..vision_encoder.graph import _vision_encoder +from .mistral_graph import _transformer + + +def _linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + """Unlike the vision encoder's version, this linear layer has a bias. + This linear layer is used by the LlavaMultiModalConnector + """ + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None), + bias=weights.bias.allocate(dtype, [in_features], None), + ) + + +def _multi_modal_projector( + dtype: DType, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> LlavaMultiModalConnector: + """Connects the vision encoder to the text decoder. + This MLP projects the patch embeddings to the text-encoder's embeddings space. + Input shape: + Output shape: + """ + return LlavaMultiModalConnector( + _linear( + dtype, + pipeline_config.huggingface_config.text_config.hidden_size, + pipeline_config.huggingface_config.vision_config.hidden_size, + weights.linear_1, + ), + _linear( + dtype, + pipeline_config.huggingface_config.text_config.hidden_size, + pipeline_config.huggingface_config.text_config.hidden_size, + weights.linear_2, + ), + ) + + +def _llava_vision_encoder_and_projector( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> LlavaVisionEncoder: + # TODO(AIPIPE-273): Once we have mo.if, use this version of Llava rather than creating 2 graphs + vision_encoder = _vision_encoder(graph, pipeline_config, weights) + multi_modal_projector = _multi_modal_projector( + pipeline_config.dtype, pipeline_config, weights.multi_modal_projector + ) + return LlavaVisionEncoder( + vision_encoder=vision_encoder, + multi_modal_projector=multi_modal_projector, + ) + + +def _llava_decoder( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +) -> LlavaConditionalGenerationTextOnly: + # Weights of pixtral decoder have the same names and shapes as weights of mistral. + language_model = _transformer( + graph=graph, + params=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + + return LlavaConditionalGenerationTextOnly( + language_model=language_model, + vocab_size=pipeline_config.huggingface_config.text_config.vocab_size, + image_token_index=pipeline_config.huggingface_config.image_token_index, + ) + + +def _llava( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +) -> LlavaConditionalGeneration: + # TODO: Once we have mo.if, use this version of Llava rather than creating 2 graphs + vision_encoder = _vision_encoder(graph, pipeline_config, weights) + multi_modal_projector = _multi_modal_projector( + dtype=pipeline_config.dtype, + pipeline_config=pipeline_config, + weights=weights.multi_modal_projector, + ) + # Weights of pixtral have the same names and shapes as weights of mistral. + language_model = _transformer( + graph=graph, + params=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + + return LlavaConditionalGeneration( + vision_encoder=vision_encoder, + multi_modal_projector=multi_modal_projector, + language_model=language_model, + vocab_size=pipeline_config.huggingface_config.text_config.vocab_size, + image_token_index=pipeline_config.huggingface_config.image_token_index, + vision_feature_layer=pipeline_config.huggingface_config.vision_feature_layer, + vision_feature_select_strategy=pipeline_config.huggingface_config.vision_feature_select_strategy, + image_seq_length=pipeline_config.huggingface_config.image_seq_length, + ) + + +def _build_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + # TODO: Make this work for multiple devices. Now getting the types for device [0] + kv_cache_types = kv_manager.input_symbols()[0] + + input_ids_type = TensorType( + DType.int64, + shape=["total_seq_len"], + ) + # TODO: should be changed to add "batch_size", "n_images" dims when working with multiple images + pixel_values_type = TensorType( + DType.float32, + shape=["image_height", "image_width", "num_channels"], + ) + + attention_mask_type = TensorType( + DType.float32, + shape=["batch_size", 1, "num_patches", "num_patches"], + ) + + # Type of start and end position of each batch in the combined total_seq_len dimension. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + + # Initialize Graph. + with Graph( + "pixtral", + input_types=[ + input_ids_type, + pixel_values_type, + attention_mask_type, + input_row_offsets_type, + *kv_cache_types, + ], + ) as graph: + model = _llava( + graph=graph, + pipeline_config=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + ( + input_ids, + pixel_values, + attention_mask, + input_row_offsets, + *kv_cache_inputs, + ) = graph.inputs + outputs = model( + input_ids=input_ids.tensor, + pixel_values=pixel_values.tensor, + attention_mask=attention_mask.tensor, + kv_cache_inputs=kv_cache_inputs, # type: ignore + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + + +def _build_vision_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> Graph: + # Graph input types. + pixel_values_type = TensorType( + DType.float32, + shape=["image_height", "image_width", "num_channels"], + ) + + attention_mask_type = TensorType( + DType.float32, + shape=["batch_size", 1, "num_patches", "num_patches"], + ) + + # Initialize Graph. + with Graph( + "pixtral_vision_encoder", + input_types=[ + pixel_values_type, + attention_mask_type, + ], + ) as graph: + model = _llava_vision_encoder_and_projector( + graph, pipeline_config, weights + ) + ( + pixel_values, + attention_mask, + ) = graph.inputs + outputs = model( + pixel_values=pixel_values.tensor, + attention_mask=attention_mask.tensor, + ) + graph.output(outputs) + return graph + + +def _build_text_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + # TODO: Make this work for multiple devices. Now getting the types for device [0] + kv_cache_types = kv_manager.input_symbols()[0] + + input_ids_type = TensorType( + DType.int64, + shape=["total_seq_len"], + ) + + # Type of start and end position of each batch in the combined total_seq_len dimension. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + + # num_images, num_patches_in_image, language_model_hidden_dim + image_embeddings_type = TensorType( + pipeline_config.dtype, + shape=[ + # TODO(bduke): fix algebraic dim creation outside of graph contexts. + "num_images", + "num_patches_in_image", + pipeline_config.huggingface_config.text_config.hidden_size, + ], + ) + + # Initialize Graph. + with Graph( + "pixtral", + input_types=[ + input_ids_type, + image_embeddings_type, + input_row_offsets_type, + *kv_cache_types, + ], + ) as graph: + model = _llava_decoder( + graph=graph, + pipeline_config=pipeline_config, + weights=weights, + max_seq_len=max_seq_len, + kv_params=kv_params, + ) + ( + input_ids, + image_embeds, + input_row_offsets, + *kv_cache_inputs, + ) = graph.inputs + outputs = model( + input_ids=input_ids.tensor, + image_embeds=image_embeds.tensor, + kv_cache_inputs=kv_cache_inputs, # type: ignore + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/pixtral/model/mistral_graph.py b/src/max/pipelines/architectures/pixtral/model/mistral_graph.py new file mode 100644 index 0000000000..855e94614e --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/model/mistral_graph.py @@ -0,0 +1,236 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Mistral model via Graph API from Safetensor weights.""" + +import math +from typing import Union + +from max.dtype import DType +from max.graph import Graph, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + TransformerBlock, +) + +from ..llava.llava_decoder import Transformer + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return MLP( + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.gate_proj, + ), + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.mlp.down_proj, + ), + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.up_proj, + ), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None) + ) + + +def rms_norm(dims: int, eps: float, weights: SafetensorWeights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.bfloat16, [dims]), eps) + + +def embedding( + params: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: SafetensorWeights, +): + return Embedding( + weights.weight.allocate( + params.dtype, + [vocab_size, hidden_dim], + ) + ) + + +def _attention_opaque( + kv_params: KVCacheParams, + params: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: SafetensorWeights, + layer_idx: int, +): + kv_weight_dim = ( + params.huggingface_config.text_config.head_dim + * params.huggingface_config.text_config.num_key_value_heads + ) + + wq = weights.self_attn.q_proj.weight.allocate( + params.dtype, + [ + params.huggingface_config.text_config.num_attention_heads + * params.huggingface_config.text_config.head_dim, + params.huggingface_config.text_config.hidden_size, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.text_config.hidden_size], + ) + wv = weights.self_attn.v_proj.weight.allocate( + params.dtype, + [kv_weight_dim, params.huggingface_config.text_config.hidden_size], + ) + wqkv = ops.concat((wq, wk, wv)) + + return AttentionWithRope( + n_heads=params.huggingface_config.text_config.num_attention_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=linear( + params.dtype, + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.num_attention_heads + * params.huggingface_config.text_config.head_dim, + weights.self_attn.o_proj, + ), + rope=rope, + layer_idx=ops.constant(layer_idx, DType.uint32), + scale=math.sqrt(1 / kv_params.head_dim), + ) + + +def _transformer( + graph: Graph, + params: PipelineConfig, + weights: SafetensorWeights, + max_seq_len: int, + kv_params: KVCacheParams, +): + with graph: + rope = OptimizedRotaryEmbedding( + dim=params.huggingface_config.text_config.num_attention_heads + * params.huggingface_config.text_config.head_dim, + n_heads=params.huggingface_config.text_config.num_attention_heads, + theta=params.huggingface_config.text_config.rope_theta, + max_seq_len=max_seq_len, + rope_scaling=None, + interleaved=False, + ) + + layers = [ + TransformerBlock( + attention=_attention_opaque( + kv_params, + params, + rope, + weights.language_model.model.layers[i], + layer_idx=i, + ), + mlp=feed_forward( + params.dtype, + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.intermediate_size, + weights.language_model.model.layers[i], + ), + attention_norm=rms_norm( + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.rms_norm_eps, + weights.language_model.model.layers[i].input_layernorm, + ), + mlp_norm=rms_norm( + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.rms_norm_eps, + weights.language_model.model.layers[ + i + ].post_attention_layernorm, + ), + ) + for i in range( + params.huggingface_config.text_config.num_hidden_layers + ) + ] + + embedding_layer = embedding( + params, + params.huggingface_config.text_config.vocab_size, + params.huggingface_config.text_config.hidden_size, + weights.language_model.model.embed_tokens, + ) + + output = linear( + params.dtype, + params.huggingface_config.text_config.vocab_size, + params.huggingface_config.text_config.hidden_size, + weights.language_model.lm_head, + ) + + kv_collection_cls: Union[ + type[FetchContinuousBatchingKVCacheCollection], + type[FetchPagedKVCacheCollection], + ] + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + kv_collection_cls = FetchContinuousBatchingKVCacheCollection + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + kv_collection_cls = FetchPagedKVCacheCollection + else: + raise ValueError( + f"Unsupported caching strategy {kv_params.cache_strategy}" + ) + + return Transformer( + dim=params.huggingface_config.text_config.hidden_size, + n_heads=params.huggingface_config.text_config.num_attention_heads, + layers=layers, + norm=rms_norm( + params.huggingface_config.text_config.hidden_size, + params.huggingface_config.text_config.rms_norm_eps, + weights.language_model.model.norm, + ), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection_cls(kv_params), + ) diff --git a/src/max/pipelines/architectures/pixtral/pixtral.py b/src/max/pipelines/architectures/pixtral/pixtral.py new file mode 100644 index 0000000000..95102c3d89 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/pixtral.py @@ -0,0 +1,366 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +from collections.abc import Sequence +from concurrent.futures import ThreadPoolExecutor +from typing import cast + +import numpy as np +from max.driver import Device, Tensor +from max.engine import InferenceSession, Model +from max.graph.weights import SafetensorWeights +from max.pipelines import ( + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextAndVisionContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) + +from .model.graph import _build_text_graph, _build_vision_graph +from .vision_encoder.attention_utils import causal_attention_mask_2d_from_imgs + +logger = logging.getLogger("max.pipelines") + + +class PixtralInputs(ModelInputs): + """Holds inputs for the Pixtral model.""" + + input_ids: Tensor + input_row_offsets: Tensor + + # Image inputs + _pixel_values: Tensor | None = None + _attention_mask: Tensor | None = None + + def __init__( + self, + input_ids: Tensor, + input_row_offsets: Tensor, + pixel_values: Tensor | None = None, + attention_mask: Tensor | None = None, + kv_cache_inputs: KVCacheInputs | None = None, + ): + self.input_ids = input_ids + self.input_row_offsets = input_row_offsets + self._pixel_values = pixel_values + self._attention_mask = attention_mask + self.kv_cache_inputs = kv_cache_inputs + + @property + def has_vision_inputs(self) -> bool: + """Returns true iff this includes vision model inputs.""" + return self._pixel_values is not None + + @property + def pixel_values(self) -> Tensor: + assert self._pixel_values is not None + return self._pixel_values + + @property + def attention_mask(self) -> Tensor: + assert self._attention_mask is not None + return self._attention_mask + + +class PixtralModel(PipelineModel[TextAndVisionContext]): + """The overall interface to the Pixtral model.""" + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.vision_model, self.language_model = self.load_model(session) + # Note that in a multimodal model, the language model is the last model in the + # pipeline. Unfortunately, self.model is still being used (and exposed) + # in the token generation code, so we still need to set it here. + self.model = self.language_model + + def execute( + self, + model_inputs: ModelInputs, + ) -> ModelOutputs: + model_inputs = cast(PixtralInputs, model_inputs) + if model_inputs.has_vision_inputs: + image_embeds = self.vision_model.execute( + model_inputs.pixel_values, + model_inputs.attention_mask, + copy_inputs_to_device=False, + )[0] + else: + # batch_size * num_concurrent_media * num_patches are set to 0 here to imitate a dummy tensor (used in text-only mode). + image_embeds = Tensor.zeros( + shape=[ + 0, + 0, + self.pipeline_config.huggingface_config.text_config.hidden_size, + ], + dtype=self.pipeline_config.dtype, + ).to(self.pipeline_config.devices[0]) + assert model_inputs.kv_cache_inputs is not None, ( + "Pixtral has KV cache inputs, but none were provided" + ) + model_outputs = self.language_model.execute( + model_inputs.input_ids, + image_embeds, + model_inputs.input_row_offsets, + *model_inputs.kv_cache_inputs, + copy_inputs_to_device=False, + ) + assert not self.pipeline_config.enable_echo + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextAndVisionContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> PixtralInputs: + # Input row offset type: ["input_row_offsets_len"], UInt32 + input_row_offsets = Tensor.from_numpy( + np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + ).to(self.pipeline_config.devices[0]) + + # Input Ids: ["total_seq_len"], Int64 + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.ascontiguousarray( + np.concatenate([ctx.next_tokens for ctx in context_batch]) + ) + input_ids = Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ) + + # TODO: change this to work with all contexts in the batch. + if context_batch[ + 0 + ].pixel_values: # check if the request has pixel_values + # Get first image in first batch and permute the order to (HWC). + # Pixtral processor returns CHW images. + image = np.ascontiguousarray( + np.transpose(context_batch[0].pixel_values[0], (1, 2, 0)) + ) + pixel_values = Tensor.from_numpy(image).to( + self.pipeline_config.devices[0] + ) + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + fill_val = -10000.0 + attention_mask = causal_attention_mask_2d_from_imgs( + [image], + self.pipeline_config.huggingface_config.vision_config.patch_size, + 1, + fill_val, + ) + attention_mask = Tensor.from_numpy(attention_mask).to( + self.pipeline_config.devices[0] + ) + return PixtralInputs( + input_ids=input_ids, + input_row_offsets=input_row_offsets, + pixel_values=pixel_values, + attention_mask=attention_mask, + kv_cache_inputs=kv_cache_inputs, + ) + + return PixtralInputs( + input_ids=input_ids, + input_row_offsets=input_row_offsets, + kv_cache_inputs=kv_cache_inputs, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> PixtralInputs: + prev_model_inputs = cast(PixtralInputs, prev_model_inputs) + # input_ids, old_row_offsets, Optional: [pixel_values, attention_mask] + old_row_offsets = prev_model_inputs.input_row_offsets + + row_offsets_size = old_row_offsets.shape[0] + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + # In multi-step execution, don't re-pass the pixel_values and attention_mask. + return PixtralInputs( + input_ids=next_tokens, + input_row_offsets=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.text_config.num_hidden_layers + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + page_size=pipeline_config.kv_cache_page_size, + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.text_config.num_key_value_heads, + head_dim=pipeline_config.huggingface_config.text_config.head_dim, + cache_strategy=pipeline_config.cache_strategy, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.text_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Pixtral, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.text_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.get_num_layers(self.pipeline_config), + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=cls.get_num_layers(pipeline_config), + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model(self, session: InferenceSession) -> tuple[Model, Model]: + if self.pipeline_config.enable_echo: + msg = "Pixtral model does not currently implement enable echo." + raise ValueError(msg) + + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + weights = self.pipeline_config.load_weights() + + if not isinstance(weights, SafetensorWeights): + msg = ( + "only safetensors weights are currently supported in Pixtral" + " models." + ) + raise ValueError(msg) + + self._weights = weights + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + def serialized_load(serialized_path): + logger.info("Loading serialized model from %s", serialized_path) + model = session.load( + f"{serialized_path}", weights_registry=weights_registry + ) + return model + + vision_model = serialized_load(f"{serialized_path}.vision") + text_model = serialized_load(f"{serialized_path}.text") + + else: + + def build_and_compile_model(build, label, export_path=None): + logger.info(f"Building and compiling {label} model...") + graph = build() + before = time.perf_counter() + model = session.load( + graph, + weights_registry=self._weights.allocated_weights, + ) + after = time.perf_counter() + logger.info( + f"Building and compiling {label} model took {after - before:.6f} seconds" + ) + if export_path: + mef_path = f"{export_path}.{label}" + logger.info( + f"Exporting serialized {label} model to {mef_path}" + ) + model._export_mef(mef_path) + return model + + export_path = self.pipeline_config.save_to_serialized_model_path + with ThreadPoolExecutor(max_workers=2) as executor: + build = lambda: _build_vision_graph( + pipeline_config=self.pipeline_config, + weights=self._weights, + ) + vision_model_future = executor.submit( + build_and_compile_model, build, "vision", export_path + ) + + build = lambda: _build_text_graph( + pipeline_config=self.pipeline_config, + weights=self._weights, + max_seq_len=self.calculate_max_seq_len( + self.pipeline_config + ), + kv_params=self.get_kv_params(self.pipeline_config), + kv_manager=self.kv_manager, + ) + text_model_future = executor.submit( + build_and_compile_model, build, "text", export_path + ) + + vision_model = vision_model_future.result() + text_model = text_model_future.result() + + return vision_model, text_model diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/__init__.py b/src/max/pipelines/architectures/pixtral/vision_encoder/__init__.py new file mode 100644 index 0000000000..1ce61c35f1 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/__init__.py @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Pixtral Code vision encoder layer modules.""" diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/attention.py b/src/max/pipelines/architectures/pixtral/vision_encoder/attention.py new file mode 100644 index 0000000000..530f58e26a --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/attention.py @@ -0,0 +1,139 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +import math +from dataclasses import dataclass + +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.linear import Linear + +from .attention_utils import rotate_half + + +@dataclass +class Attention(Layer): + n_heads: int + dim: int + head_dim: int # hidden_size // self.n_heads + + dropout: float + + wq: Linear + wk: Linear + wv: Linear + wo: Linear + + def apply_rotary_embedding( + self, + xq: TensorValue, + xk: TensorValue, + cos: TensorValue, + sin: TensorValue, + unsqueeze_dim=0, + ) -> tuple[TensorValue, TensorValue]: + """Applies Rotary Position Embedding to the query and key tensors. + + Args: + xq (`TensorValueLike`): The query tensor. + xk (`TensorValueLike`): The key tensor. + cos (`TensorValueLike`): The cosine part of the rotary embedding. + sin (`TensorValueLike`): The sine part of the rotary embedding. + unsqueeze_dim (`int`, *optional*, defaults to 1): + The 'unsqueeze_dim' argument specifies the dimension along which to unsqueeze cos and + sin so that they can be properly broadcasted to the dimensions of q and k. For example, note + that cos and sin have the shape [batch_size, seq_len, head_dim]. Then, if q and + k have the shape [batch_size, heads, seq_len, head_dim], then setting unsqueeze_dim=1 makes + cos and sin broadcastable to the shapes of q and k. Similarly, if q and k have + the shape [batch_size, seq_len, heads, head_dim], then set unsqueeze_dim=2. + Returns: + `tuple(TensorValueLike)` comprising of the query and key tensors rotated using the Rotary Position Embedding. + """ + cos = ops.unsqueeze(cos, unsqueeze_dim) + sin = ops.unsqueeze(sin, unsqueeze_dim) + xq = xq.transpose(1, 2) + xk = xk.transpose(1, 2) + + q_embed = (xq * cos) + (rotate_half(xq) * sin) + k_embed = (xk * cos) + (rotate_half(xk) * sin) + return q_embed, k_embed + + def attention( + self, + xq: TensorValue, + xk: TensorValue, + xv: TensorValue, + attn_mask: TensorValueLike, + ) -> TensorValue: + xv = xv.transpose(1, 2) + + scale = math.sqrt(1.0 / self.head_dim) + # xk shape = batch_size=1, n_heads=16, head_dim=64, image_seq_len=160 + scores = xq @ ops.transpose(xk, 2, 3) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + # attn_mask and pixel_values are model inputs. scores is self-attention + # scores between all patches in pixel_values. + # attn_mask shape = ("n_images", 1, "num_patches_in_image", "num_patches_in_image") + # scores shape = ("n_images", "n_heads", "num_patches_in_image", "num_patches_in_image") + attn_mask = ops.rebind( + attn_mask, (scores.shape[0], 1, scores.shape[2], scores.shape[3]) + ) + scores = ops.softmax(scores * scale + attn_mask) + + return scores @ xv + + def __call__( + self, + x: TensorValue, + attention_mask: TensorValueLike, + position_embeddings: tuple[TensorValue, TensorValue], + ) -> TensorValue: + """Computes attention on x. + + Args: + x: Activations with shape (batch, seq_len, dim). + attention_mask: a mask to ensure different blocks of patches (images) + can only attend to patches within their respective block (image). + position_embeddings: + + Returns the result of multi-headed self attention on the input. + """ + + batch_size, n_patches = x.shape[0], x.shape[1] + # matmul weights + xq = self.wq(x) + xk = self.wk(x) + xv = self.wv(x) + + xq = ops.reshape( + xq, [batch_size, n_patches, self.n_heads, self.head_dim] + ) + xk = ops.reshape( + xk, [batch_size, n_patches, self.n_heads, self.head_dim] + ) + xv = ops.reshape( + xv, [batch_size, n_patches, self.n_heads, self.head_dim] + ) + + cos, sin = position_embeddings + xq, xk = self.apply_rotary_embedding(xq, xk, cos, sin, unsqueeze_dim=0) + + output = ( + self.attention(xq, xk, xv, attention_mask) + .transpose(1, 2) + .reshape([batch_size, n_patches, -1]) + ) + return self.wo(output) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/attention_utils.py b/src/max/pipelines/architectures/pixtral/vision_encoder/attention_utils.py new file mode 100644 index 0000000000..735e37041b --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/attention_utils.py @@ -0,0 +1,125 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import List + +import numpy as np +from max.graph import TensorValue, ops + + +def causal_attention_mask_2d_from_imgs( + imgs: List[np.ndarray], + patch_size: int, + batch_size: int, + fill_val: float = -10000.0, +): + """Generates a 2D mask to ensure different blocks of patches (images) can only attend + to patches within their respective block (image). + + Args: + + num_patches_list: A list of images (blocks). Each image is of shape + (height, width, num_channels). + + patch_size: size of one dim of each patch in the image. + + batch_size: num of images. + + + Returns an ndarray of shape (batch_size, 1, seq_len, seq_len) representing the + attention mask for the blocks of patches attended to by the transformer. + """ + # generate list of (num_patches_in_height * num_patches_in_width) for each image + num_patches_list = [ + img.shape[0] // patch_size * img.shape[1] // patch_size for img in imgs + ] + + # seq_length is number of patches in all images + seq_len = sum(num_patches_list) + mask_shape = (seq_len, seq_len) + + # TODO(KERN-782): This fill_val should be -inf but softmax saturates with NaNs. + fill_matrix = np.full(mask_shape, fill_val, dtype=np.float32) + + # block_end_idx and block_start_idx are calculated using cumulative sums of + # patch_embeds_list. These indicate the starting and ending indices of each + # block of embeddings. + block_end_idx = np.cumsum(num_patches_list) + block_start_idx = np.cumsum(np.concatenate(([0], num_patches_list[:-1]))) + + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + for start, end in zip(block_start_idx, block_end_idx): + fill_matrix[int(start) : int(end), int(start) : int(end)] = 0 + + # Expand the mask dimensions to match the expected input shape + fill_matrix = np.expand_dims(fill_matrix, axis=(0, 1)) # Add two new axes + fill_matrix = np.broadcast_to( + fill_matrix, (batch_size, 1, seq_len, seq_len) + ) + return fill_matrix + + +def causal_attention_mask_2d( + num_patches_list: list[int], patch_embeds: TensorValue +): + """Generates a 2D mask to ensure different blocks of patches (images) can only attend + to patches within their respective block (image). + + Args: + + num_patches_list: A list of integers, where each entry represents the number of patches + in a block (e.g., (num_patches_in_height × num_patches_in_width) patches per image block). + It is list representing the sizes of different blocks in terms of patches. + + patch_embeds:A tensor of shape [batch_size, num_patches, hidden_size] representing the + embeddings of patches in a batch of images. + + Returns an ndarray of shape (batch_size, 1, seq_len, seq_len) representing the + attention mask for the blocks of patches attended to by the transformer. + """ + # The total number of patches for all image in the batch. + # TODO: change this to take a dim not an int. + seq_len = int(patch_embeds.shape[1]) + mask_shape = (seq_len, seq_len) + + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + fill_val = -10000.0 + fill_matrix = np.full(mask_shape, fill_val, dtype=np.float32) + + # block_end_idx and block_start_idx are calculated using cumulative sums of + # patch_embeds_list. These indicate the starting and ending indices of each + # image (block of embeddings). + block_end_idx = np.cumsum(num_patches_list) + block_start_idx = np.cumsum(np.concatenate(([0], num_patches_list[:-1]))) + + # For each block, set the diagonal region corresponding to that block to 0. + # This allows patches within the same block to attend to each other. + for start, end in zip(block_start_idx, block_end_idx): + fill_matrix[int(start) : int(end), int(start) : int(end)] = 0 + + # Expand the mask dimensions to match the expected transformer input shape. + fill_matrix = np.expand_dims(fill_matrix, axis=(0, 1)) # Add two new axes + fill_matrix = np.broadcast_to( + fill_matrix, + (int(patch_embeds.shape[0]), 1, seq_len, seq_len), + ) + return fill_matrix + + +def rotate_half(x: TensorValue): + """Rotates half the hidden dims of the input.""" + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2 :] + return ops.concat((-x2, x1), axis=-1) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/graph.py b/src/max/pipelines/architectures/pixtral/vision_encoder/graph.py new file mode 100644 index 0000000000..b6ee70ec28 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/graph.py @@ -0,0 +1,218 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from max.dtype import DType +from max.graph import Graph, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.nn import Conv2D, Linear, RMSNorm + +from .attention import Attention +from .rotary_embedding_2d import RotaryEmbedding2D +from .transformer import MLP, Transformer, TransformerBlock +from .vision_encoder import VisionEncoder + + +def _patch_conv2d( + dtype: DType, + in_channels: int, + patch_size: int, + out_channels: int, + weights: SafetensorWeights, +) -> Conv2D: + """Creates a 2D convolution layer with the following assumptions: + - kernel size = (patch_size, patch_size) + - stride = (patch_size, patch_size) + - padding = (0, 0, 0, 0) + + This convolution splits the image into patches and then learns an embedding + of each patch. The embedding dim is out_channels. + """ + # Loaded torch weights shape = torch.Size([1024, 3, 16, 16]). + # Conv2D expects (height, width, in_channels, out_channels) = [16, 16, 3, 1024]. + weights = ops.permute( # type: ignore + weights.weight.allocate( + dtype, [out_channels, in_channels, patch_size, patch_size], None + ), + [2, 3, 1, 0], + ) + return Conv2D( + weights, # type: ignore + stride=(patch_size, patch_size), + ) + + +def _linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None) + ) + + +def _feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return MLP( + _linear( # gate_proj + dtype, + feed_forward_length, + hidden_dim, + weights.feed_forward.gate_proj, + ), + _linear( # down_proj + dtype, + hidden_dim, + feed_forward_length, + weights.feed_forward.down_proj, + ), + _linear( # up_proj + dtype, + feed_forward_length, + hidden_dim, + weights.feed_forward.up_proj, + ), + ) + + +def _rms_norm(dims: int, eps: float, weights: SafetensorWeights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.bfloat16, [dims]), eps) + + +def _encoder_attention( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> Attention: + # TODO: Do we need to transpose weights? Not obvious from shapes. Both dims are the same. + hidden_dim = pipeline_config.huggingface_config.vision_config.hidden_size + wq = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.q_proj, + ) + wk = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.k_proj, + ) + wv = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.v_proj, + ) + wo = _linear( + pipeline_config.dtype, + hidden_dim, + hidden_dim, + weights.attention.o_proj, + ) + + return Attention( + n_heads=pipeline_config.huggingface_config.vision_config.num_attention_heads, + dim=hidden_dim, + head_dim=pipeline_config.huggingface_config.vision_config.head_dim, + dropout=pipeline_config.huggingface_config.vision_config.attention_dropout, + wq=wq, + wk=wk, + wv=wv, + wo=wo, + ) + + +def _transformer( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +): + with graph: + layers = [ + TransformerBlock( + attention=_encoder_attention( + pipeline_config, weights.layers[i] + ), + mlp=_feed_forward( + pipeline_config.dtype, + pipeline_config.huggingface_config.vision_config.hidden_size, + pipeline_config.huggingface_config.vision_config.intermediate_size, + weights.layers[i], + ), + attention_norm=_rms_norm( + pipeline_config.huggingface_config.vision_config.hidden_size, + 1e-5, + weights.layers[i].attention_norm, + ), + mlp_norm=_rms_norm( + pipeline_config.huggingface_config.vision_config.hidden_size, + 1e-5, + weights.layers[i].ffn_norm, + ), + ) + for i in range( + pipeline_config.huggingface_config.vision_config.num_hidden_layers + ) + ] + + return Transformer( + n_heads=pipeline_config.huggingface_config.vision_config.num_attention_heads, + layers=layers, + dtype=pipeline_config.dtype, + ) + + +def _vision_encoder( + graph: Graph, + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> VisionEncoder: + patch_conv = _patch_conv2d( + pipeline_config.dtype, + pipeline_config.huggingface_config.vision_config.num_channels, + pipeline_config.huggingface_config.vision_config.patch_size, + pipeline_config.huggingface_config.vision_config.hidden_size, + weights.vision_tower.patch_conv, + ) + ln_pre = _rms_norm( + pipeline_config.huggingface_config.vision_config.hidden_size, + 1e-5, + weights.vision_tower.ln_pre, + ) + patch_rope = RotaryEmbedding2D( + dim=pipeline_config.huggingface_config.vision_config.hidden_size, + n_heads=pipeline_config.huggingface_config.vision_config.num_attention_heads, + theta=pipeline_config.huggingface_config.vision_config.rope_theta, + max_patches_per_side=pipeline_config.huggingface_config.vision_config.image_size + // pipeline_config.huggingface_config.vision_config.patch_size, + ) + encoder_transformer = _transformer( + graph, pipeline_config, weights.vision_tower.transformer + ) + + return VisionEncoder( + patch_conv=patch_conv, + layer_norm=ln_pre, + patch_positional_embedding=patch_rope, + transformer=encoder_transformer, + dtype=pipeline_config.dtype, + patch_size=pipeline_config.huggingface_config.vision_config.patch_size, + max_image_size=pipeline_config.huggingface_config.vision_config.image_size, + ) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/rotary_embedding_2d.py b/src/max/pipelines/architectures/pixtral/vision_encoder/rotary_embedding_2d.py new file mode 100644 index 0000000000..65b38bfb50 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/rotary_embedding_2d.py @@ -0,0 +1,200 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from dataclasses import dataclass +from functools import cached_property +from typing import List, Optional + +import numpy as np +from max.dtype import DType +from max.graph import Dim, DimLike, TensorValue, TensorValueLike, ops +from max.pipelines.nn.layer import Layer + + +def meshgrid(height: DimLike, width: DimLike, indexing="ij") -> TensorValue: + """Returns row indices and col indices of each point on the grid.""" + height = Dim(height) + width = Dim(width) + row_indices = ops.range( + ops.constant(0, DType.int64), + TensorValue.from_dim(height), + ops.constant(1, DType.int64), + out_dim=height, + ) + col_indices = ops.range( + ops.constant(0, DType.int64), + TensorValue.from_dim(width), + ops.constant(1, DType.int64), + out_dim=width, + ) + + # repeat row indices for each row [[0, ..., 0], ..., [width=n_cols-1, ..., width-1]] + h_grid = ops.tile( + ops.unsqueeze(row_indices, 1), [1, width] + ) # Shape: (height, width) + # repeat col indices for each col [[0, 1, ..., height-1=n_rows-1], ...] + v_grid = ops.tile( + ops.unsqueeze(col_indices, 0), [height, 1] + ) # Shape: (height, width) + return h_grid, v_grid # type: ignore + + +def patch_position_ids( + patch_embeds: List[TensorValue], max_width: int +) -> TensorValue: + """ + Takes a list of patches, calculates the positional indices for each patch by + flattening the array, and returns these indices in the positions tensor. + max_width is the maximum numbers of patches you can have in an image on one + side ie.e max_image_width_or_height // patch_size. + """ + positions = [] + for patch in patch_embeds: + height, width = patch.shape[ + 1:3 + ] # img_height/patch_size, img_width/patch_size + # TODO(MSDK-1194): replace with ops.meshgrid() + mesh = meshgrid(height, width, indexing="ij") + # TODO(MSDK-1193): replace ? by ops.chunk() or ops.split_tensor() + # Combine row and col indices into 1 tensor of paired coordinates. Shape = (height, width, 2) + # Then split into 2 tensors: 1st and 2nd coordinate of points in the mesh. + mesh_coords = ops.stack(mesh, axis=-1).reshape((-1, 2)) # type: ignore + h_grid, v_grid = mesh_coords[:, 0], mesh_coords[:, 1] + # Calculates a unique ID for each coordinate pair. + # TODO: Understand if using max_width here leads to memory inefficiency + ids = h_grid * max_width + v_grid + positions.append(ids[:]) + return ops.concat(positions) + + +@dataclass +class RotaryEmbedding2D(Layer): + """ + RotaryEmbedding layer to calculate and apply the frequency tensor for complex exponentials. + """ + + dim: DimLike + n_heads: int + theta: float + """Hyperparameter used to control the frequency scaling of the sinusoidal components of the embeddings.""" + max_patches_per_side: int + """The maximum number of patches per side for model's input (images).""" + rope_scaling: Optional[np.ndarray] = None + """Scaling factor for the positional frequencies.""" + + def freqs_cis_base(self) -> TensorValue: + """ + Computes the frequency tensor for complex exponentials (cis) + for a given seq_len = num_patches in a block (image). + Tensor is scaled with theta parameter. + Required to apply Rotary Position Embedding (RoPE) to tensor. + See 'Roformer: Enhanced Transformer with Rotary Embedding' + (arxiv.org/pdf/2104.09864). + + Returns: + The frequency tensor for complex exponentials with shape + (max_seq_len, dim//(n_heads), 2) + ??(batch_size, height * width, dim) with dim the embed dim. + """ + head_dim = ( + self.dim // self.n_heads # type: ignore + ) # hidden_size // num_attention_heads + # Note: using float64 to avoid an overflow on the exponential, then converting back to float32. + # 1D tensor of length head_dim // 2 = 32 + iota = ops.range( + ops.constant(0, DType.float64), + ops.constant(head_dim, DType.float64), # type: ignore + ops.constant(2, DType.float64), + out_dim=head_dim // 2, + ) + if self.rope_scaling is not None: + iota = iota * self.rope_scaling + # 1D tensor of length head_dim // 2 = 32 + freqs = ops.cast(1.0 / (self.theta ** (iota / head_dim)), DType.float32) + + # Indices of patches in each side (height and width) of image. + # 1D tensor of length max_patches_per_side = 64 + h = ops.range( + ops.constant(0, DType.float32), + ops.constant(self.max_patches_per_side, DType.float32), + ops.constant(1, DType.float32), + out_dim=self.max_patches_per_side, + ) + # 1D tensor of length max_patches_per_side = 64 + w = ops.range( + ops.constant(0, DType.float32), + ops.constant(self.max_patches_per_side, DType.float32), + ops.constant(1, DType.float32), + out_dim=self.max_patches_per_side, + ) + # create matrices of freqs = outer product of height and width indices with their respective frequency. + # 2D tensors mapping patch positions to rotary embeddings. shape =(max_patches_per_side = 64, head_dim//4 =16) + freqs_h = ops.outer(h, freqs[::2]) + freqs_w = ops.outer(w, freqs[1::2]) + + # Combines the frequency matrices of horizontal and vertical patch indices into a single tensor of patches + # 2D tensor of shape (max_patches_per_side*max_patches_per_side = 4096, head_dim // 2 = 32) + _inv_freq = ops.concat( + [ + ops.tile( + ops.unsqueeze(freqs_h, 1), + (1, self.max_patches_per_side, 1), + ), + ops.tile( + ops.unsqueeze(freqs_w, 0), + (self.max_patches_per_side, 1, 1), + ), + ], + axis=-1, + ).reshape((-1, head_dim // 2)) + + # In Hugging Face Code, double copies to have rotary embeddings that match head_dim + # 2D tensor of shape (max_patches_per_side*max_patches_per_side =4096, head_dim=64) + _inv_freq = ops.concat((_inv_freq, _inv_freq), axis=-1) + + # 2D tensor of shape (max_patches_per_side*max_patches_per_side =4096, head_dim*2=128) + # self._freqs_cis = ops.stack( + # [ops.cos(_inv_freq), ops.sin(_inv_freq)], axis=-1 + # ) + return TensorValue(_inv_freq) + + @cached_property + def freqs_cis(self) -> TensorValue: + self._freqs_cis = self.freqs_cis_base() + return self._freqs_cis + + def __call__( + self, x: TensorValueLike, position_ids: TensorValue + ) -> tuple[TensorValue, TensorValue]: + """Applies rotary positional embeddings (RoPE) to `x`. + + Args: + x: Activation tensor with shape (batch, seq_len, n_kv_heads, head_dim). + position_ids: starting position of input tensor + + Returns: + Input activation tensor with rotary positional embeddings applied and + the same shape as `x`. + """ + v = TensorValue(x) + + # TODO: Figure out if this is the correct axis. + freqs_cis_sliced = ops.gather(self.freqs_cis, position_ids, 0) + # TODO(MSDK-1188): Ideally this cast would happen inside of the cached + # self.freqs_cis property instead of here, but complex.dtype is not + # known at that point. + cos = ops.cast(ops.cos(freqs_cis_sliced), v.dtype) + sin = ops.cast(ops.sin(freqs_cis_sliced), v.dtype) + + return cos, sin diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/transformer.py b/src/max/pipelines/architectures/pixtral/vision_encoder/transformer.py new file mode 100644 index 0000000000..e2089ead22 --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/transformer.py @@ -0,0 +1,113 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +from __future__ import annotations + +from dataclasses import dataclass +from typing import TYPE_CHECKING + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn.layer import Layer + +if TYPE_CHECKING: + from max.pipelines.nn.linear import Linear + from max.pipelines.nn.norm import RMSNorm + + from .attention import Attention + + +@dataclass +class MLP(Layer): + """ + Simple multi-layer perceptron composed of three linear layers. + Uses Gelu activation function. + """ + + gate_proj: Linear + down_proj: Linear + up_proj: Linear + + def __call__(self, x: TensorValueLike) -> TensorValue: + return self.down_proj((ops.silu(self.gate_proj(x)) * self.up_proj(x))) # type: ignore + + +@dataclass +class TransformerBlock(Layer): + """Stack of Attention, FeedForward, and RMSNorm layers.""" + + attention: Attention + mlp: MLP + attention_norm: RMSNorm + mlp_norm: RMSNorm + residual_multiplier: float = 1.0 + + def __call__( + self, + x: TensorValue, + attention_mask: TensorValueLike, + position_embeddings: tuple[TensorValue, TensorValue], + ) -> TensorValue: + residual_multiplier = ops.constant(self.residual_multiplier, x.dtype) + attn_out = self.attention( + self.attention_norm(x), + attention_mask, + position_embeddings, + ) + + if self.residual_multiplier != 1.0: + attn_out = attn_out * residual_multiplier + + h = x + attn_out + mlp = self.mlp(self.mlp_norm(h)) + if self.residual_multiplier != 1.0: + mlp = mlp * residual_multiplier + + return h + mlp + + +@dataclass +class Transformer(Layer): + """Transformer model consisting of TransformerBlock layers. + The input is embeddings created using convolution followed by normalization. + + The differences between this transformer and other decoder model transformers: + 1. Input to the transformer is patch embeddings created by convolutions not tokens. + 2. No linear(norm(output)) at the transformer output. + 3. It uses the 2d rotary embeddings defined for images which is different + from the rotary embeddings defined in other classes as rope: RotaryEmbedding + """ + + n_heads: int + layers: list[TransformerBlock] + dtype: DType + + def __call__( + self, + patch_embeds: TensorValue, + attention_mask: TensorValueLike, + position_embeddings: tuple[TensorValue, TensorValue], + **kwargs, + ): + h = patch_embeds + + for _, layer in enumerate(self.layers): + h = layer( + x=h, + attention_mask=attention_mask, + position_embeddings=position_embeddings, + **kwargs, + ) + + return ops.cast(h, self.dtype) diff --git a/src/max/pipelines/architectures/pixtral/vision_encoder/vision_encoder.py b/src/max/pipelines/architectures/pixtral/vision_encoder/vision_encoder.py new file mode 100644 index 0000000000..1c044dd18c --- /dev/null +++ b/src/max/pipelines/architectures/pixtral/vision_encoder/vision_encoder.py @@ -0,0 +1,93 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from dataclasses import dataclass +from typing import List + +from max.dtype import DType +from max.graph import TensorValueLike, ops +from max.pipelines.nn import Conv2D +from max.pipelines.nn.layer import Layer +from max.pipelines.nn.norm import RMSNorm + +from .rotary_embedding_2d import RotaryEmbedding2D, patch_position_ids +from .transformer import Transformer + + +@dataclass +class VisionEncoder(Layer): + """The bare Pixtral vision encoder outputting raw hidden-states without any + specific head on top. + + It tokenizes the list of images and returns a representation of these images + embeddings of patches. + """ + + patch_conv: Conv2D + layer_norm: RMSNorm + patch_positional_embedding: RotaryEmbedding2D + transformer: Transformer + dtype: DType + patch_size: int = 16 + max_image_size: int = 1024 + + def __call__( + self, imgs: List[TensorValueLike], attention_mask: TensorValueLike + ): + """ + imgs: list of images of shape = (height, width, num_channels) + """ + # Images go through a convolution independently to get patched. + # Returns a list of [batch_size, hidden_size, height/patch_size, width/patch_size] tensors + patch_embeds_list = [ + self.patch_conv(ops.unsqueeze(ops.cast(img, self.dtype), 0)) + for img in imgs + ] + + # Flatten all images to a single tensor of patches of size (n_patches=seq_length, hidden_size). + # 1. Flattens each image's patches to (batch_size, n_patches in image, hidden_size). + # 2. Concat patches vertically on dim 1 to get a sequence of all patches + # TODO(MSDK-1192): replace transpose(1, 2) by permute(0, 2, 1) + # TODO(MSDK-1195): replace p.reshape((p.shape[0], p.shape[1], -1)) by p.flatten(2) + patch_embeds = ops.concat( + [ # p.shape = batch_size, patches_per_height, patches_per_width, hidden_size + p.reshape((p.shape[0], -1, p.shape[3])) + for p in patch_embeds_list + ], + axis=1, + ) + + # Pre-attention layer normalization + patch_embeds = self.layer_norm(patch_embeds) + + # Get unique ids of tokens (patches) based on row and col idx in the image (position). + # These help the model understand the spatial layout of the image. + position_ids = patch_position_ids( + patch_embeds_list, max_width=self.max_image_size // self.patch_size + ) + + # Positional Encodings + # map each position id to its corresponding embedding representing that posiiton + position_embedding = self.patch_positional_embedding( + patch_embeds, position_ids + ) + + encoder_output = self.transformer( + patch_embeds=patch_embeds, + attention_mask=attention_mask, + position_embeddings=position_embedding, + ) + + return encoder_output diff --git a/src/max/pipelines/architectures/qwen2/__init__.py b/src/max/pipelines/architectures/qwen2/__init__.py new file mode 100644 index 0000000000..69d2f5bacf --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import qwen2_arch + +__all__ = ["qwen2_arch"] diff --git a/src/max/pipelines/architectures/qwen2/arch.py b/src/max/pipelines/architectures/qwen2/arch.py new file mode 100644 index 0000000000..f181ebfd1b --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/arch.py @@ -0,0 +1,47 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .model import Qwen2Model + +qwen2_arch = SupportedArchitecture( + name="Qwen2ForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=[ + "Qwen/Qwen2.5-7B-Instruct", + ], + default_weights_format=WeightsFormat.safetensors, + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + SupportedEncoding.bfloat16: [ + KVCacheStrategy.PAGED, + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.NAIVE, + ], + }, + pipeline_model=Qwen2Model, + tokenizer=TextTokenizer, +) diff --git a/src/max/pipelines/architectures/qwen2/graph.py b/src/max/pipelines/architectures/qwen2/graph.py new file mode 100644 index 0000000000..cb5c51bbdf --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/graph.py @@ -0,0 +1,309 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Build a Qwen2 model via Graph API from GGUF weights.""" + +import math +from typing import List, Union, cast + +from max.dtype import DType +from max.graph import ( + DeviceRef, + Graph, + TensorValue, + TensorValueLike, + Weight, + ops, +) +from max.graph.weights import Weights +from max.pipelines import PipelineConfig, RopeType, WeightsFormat +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + KVCacheStrategy, +) +from max.pipelines.nn import ( + MLP, + AttentionWithRope, + Embedding, + Linear, + OptimizedRotaryEmbedding, + RMSNorm, + Transformer, + TransformerBlock, +) + + +def distribute_value( + v: TensorValue, devices: List[DeviceRef] +) -> List[TensorValue]: + return [v.to(device) for device in devices] + + +def shard_col_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + col_size = v.shape[1] // n_devices + return [ + v[:, i * col_size : (i + 1) * col_size].to(device) + for i, device in enumerate(devices) + ] + + +def shard_row_value( + x: TensorValueLike, devices: List[DeviceRef] +) -> List[TensorValue]: + n_devices = len(devices) + v = TensorValue(x) + row_size = v.shape[0] // n_devices + return [ + v[i * row_size : (i + 1) * row_size, :].to(device) + for i, device in enumerate(devices) + ] + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: Weights, +) -> MLP: + return MLP( + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.gate_proj, + ), + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.mlp.down_proj, + ), + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.mlp.up_proj, + ), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: Weights, +) -> Linear: + return Linear( + weights.weight.allocate( + dtype, + [in_features, out_features], + ) + ) + + +def rms_norm(dims: int, eps: float, weights: Weights) -> RMSNorm: + return RMSNorm(weights.weight.allocate(DType.float32, [dims]), eps) + + +def embedding( + pipeline_config: PipelineConfig, + vocab_size: int, + hidden_dim: int, + weights: Weights, +) -> Embedding: + return Embedding( + weights.weight.allocate( + pipeline_config.dtype, + [vocab_size, hidden_dim], + ) + ) + + +def attention( + kv_params: KVCacheParams, + pipeline_config: PipelineConfig, + rope: OptimizedRotaryEmbedding, + weights: Weights, + layer_idx: TensorValue, +) -> AttentionWithRope: + kv_weight_dim = ( + pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads + ) * pipeline_config.huggingface_config.num_key_value_heads + + wq = weights.self_attn.q_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + ) + wv = weights.self_attn.v_proj.weight.allocate( + pipeline_config.dtype, + [kv_weight_dim, pipeline_config.huggingface_config.hidden_size], + ) + + wqkv = ops.concat((wq, wk, wv)) + + bias_q = weights.self_attn.q_proj.bias.allocate( + pipeline_config.dtype, + [pipeline_config.huggingface_config.hidden_size], + ) + + bias_k = weights.self_attn.k_proj.bias.allocate( + pipeline_config.dtype, + [kv_weight_dim], + ) + + bias_v = weights.self_attn.v_proj.bias.allocate( + pipeline_config.dtype, + [kv_weight_dim], + ) + + bias_qkv = ops.concat((bias_q, bias_k, bias_v)) + + return AttentionWithRope( + n_heads=pipeline_config.huggingface_config.num_attention_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=linear( + pipeline_config.dtype, + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.hidden_size, + weights.self_attn.o_proj, + ), + rope=rope, + layer_idx=layer_idx, + bias=bias_qkv, + scale=math.sqrt(1.0 / kv_params.head_dim), + ) + + +def transformer( + graph: Graph, + pipeline_config: PipelineConfig, + weights: Weights, + kv_params: KVCacheParams, +) -> Transformer: + with graph: + if weights.rope_freqs.weight.exists(): + rope_scaling = weights.rope_freqs.weight.raw_tensor() + else: + rope_scaling = None + + interleaved_rope_weights = ( + pipeline_config.weights_format == WeightsFormat.gguf + and pipeline_config.rope_type == RopeType.normal + ) + rope = OptimizedRotaryEmbedding( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=pipeline_config.huggingface_config.num_attention_heads, + theta=pipeline_config.huggingface_config.rope_theta, + max_seq_len=pipeline_config.huggingface_config.max_position_embeddings, + rope_scaling=rope_scaling, + interleaved=interleaved_rope_weights, + ) + + rms_norm_eps = pipeline_config.huggingface_config.rms_norm_eps + layers = [ + TransformerBlock( + attention=attention( + kv_params, + pipeline_config, + rope, + weights.model.layers[i], + layer_idx=ops.constant(i, DType.uint32), + ), + mlp=feed_forward( + pipeline_config.dtype, + pipeline_config.huggingface_config.hidden_size, + pipeline_config.huggingface_config.intermediate_size, + weights.model.layers[i], + ), + attention_norm=rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights.model.layers[i].input_layernorm, + ), + mlp_norm=rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights.model.layers[i].post_attention_layernorm, + ), + ) + for i in range(pipeline_config.huggingface_config.num_hidden_layers) + ] + + embedding_layer = embedding( + pipeline_config, + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + weights.model.embed_tokens, + ) + + # Some model variants lack dedicated weights for a final linear + # layer, and share the embedding layer. + if weights.lm_head.weight.exists(): + output = Linear.create( + pipeline_config.dtype, + pipeline_config.graph_quantization_encoding, + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + weights.lm_head, + ) + else: + output = Linear.create( + pipeline_config.dtype, + pipeline_config.graph_quantization_encoding, + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.hidden_size, + cast(Weight, embedding_layer.weights), + ) + + kv_collection: Union[ + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + ] + if kv_params.cache_strategy == KVCacheStrategy.CONTINUOUS: + kv_collection = FetchContinuousBatchingKVCacheCollection(kv_params) + elif kv_params.cache_strategy == KVCacheStrategy.PAGED: + kv_collection = FetchPagedKVCacheCollection(kv_params) + else: + raise ValueError( + "Unsupported caching strategy " + str(kv_params.cache_strategy) + ) + + return Transformer( + dim=pipeline_config.huggingface_config.hidden_size, + n_heads=pipeline_config.huggingface_config.num_attention_heads, + layers=layers, + norm=rms_norm( + pipeline_config.huggingface_config.hidden_size, + rms_norm_eps, + weights.model.norm, + ), + output=output, + embedding=embedding_layer, + kv_params=kv_params, + kv_collection_constructor=kv_collection, + all_logits=pipeline_config.enable_echo, + ) diff --git a/src/max/pipelines/architectures/qwen2/model.py b/src/max/pipelines/architectures/qwen2/model.py new file mode 100644 index 0000000000..3d26a468d1 --- /dev/null +++ b/src/max/pipelines/architectures/qwen2/model.py @@ -0,0 +1,511 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +import warnings +from typing import List, Sequence, Union, cast + +import numpy as np +from max.driver import CPU, Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession, Model +from max.graph import DeviceRef, Graph, TensorType, TensorValue +from max.graph.weights import Weights +from max.pipelines import ( + LogProbabilities, + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.dataprocessing import batch_padded_tokens_and_mask +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) +from max.pipelines.nn.compute_log_probabilities import compute_log_probabilities + +from .graph import transformer + + +class Qwen2Inputs(ModelInputs): + """A class representing inputs for the Qwen2 model. + + This class encapsulates the input tensors required for the Qwen2 model execution: + - tokens: A tensor containing the input token IDs + - input_row_offsets_or_attn_mask: A tensor containing the offsets for each row in the ragged input sequence, + or the attention mask for the padded input sequence + """ + + tokens: Tensor + input_row_offsets_or_attn_mask: Tensor + + def __init__( + self, + tokens: Tensor, + input_row_offsets_or_attn_mask: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> None: + self.tokens = tokens + self.input_row_offsets_or_attn_mask = input_row_offsets_or_attn_mask + self.kv_cache_inputs = kv_cache_inputs + + @property + def input_row_offsets(self) -> Tensor: + """Gets the row offsets of the ragged input sequence.""" + # TODO(bduke): this should implement a ragged tensor interface. + return self.input_row_offsets_or_attn_mask + + +class Qwen2Model(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def execute( + self, + model_inputs: ModelInputs, + ) -> ModelOutputs: + model_inputs = cast(Qwen2Inputs, model_inputs) + assert model_inputs.kv_cache_inputs is not None + model_outputs = self.model.execute( + model_inputs.tokens, + model_inputs.input_row_offsets_or_attn_mask, + *model_inputs.kv_cache_inputs, + copy_inputs_to_device=( + not self.pipeline_config.cache_strategy.uses_opaque() + ), + ) + + assert isinstance(model_outputs[0], Tensor) + if len(model_outputs) > 1: + assert isinstance(model_outputs[1], Tensor) + logits = model_outputs[1] + else: + logits = None + + if self.pipeline_config.enable_echo: + return ModelOutputs( + next_token_logits=model_outputs[0], + logits=logits, + ) + else: + return ModelOutputs(next_token_logits=model_outputs[0]) + + def _prepare_ragged_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> Qwen2Inputs: + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + + return Qwen2Inputs( + tokens=Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy( + input_row_offsets + ).to(self.pipeline_config.devices[0]), + kv_cache_inputs=kv_cache_inputs, + ) + + def _prepare_padded_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> Qwen2Inputs: + # Get tokens and seq_ids + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens and compute attention mask for the batch. + max_seq_len = self.kv_manager.max_sequence_length + start_pos = [max_seq_len] * len(context_batch) + next_tokens_batch, _, attn_mask = batch_padded_tokens_and_mask( + start_pos=start_pos, + tokens=tokens, + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + + return Qwen2Inputs( + tokens=Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy(attn_mask).to( + self.pipeline_config.devices[0] + ), + kv_cache_inputs=kv_cache_inputs, + ) + + # Ignored type due to challenge with Interface implementation and mypy rules. + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> Qwen2Inputs: + """Prepare the inputs for the first pass in multistep execution.""" + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_initial_token_inputs( + context_batch, kv_cache_inputs + ) + else: + return self._prepare_padded_initial_token_inputs( + context_batch, kv_cache_inputs + ) + + def _prepare_ragged_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: Qwen2Inputs, + ) -> Qwen2Inputs: + row_offsets_size = ( + prev_model_inputs.input_row_offsets_or_attn_mask.shape[0] + ) + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + + return Qwen2Inputs( + tokens=next_tokens, + input_row_offsets_or_attn_mask=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, + ) + + def _prepare_padded_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: Qwen2Inputs, + ) -> Qwen2Inputs: + batch_size = prev_model_inputs.tokens.shape[0] + start_pos = [ + prev_model_inputs.input_row_offsets_or_attn_mask.shape[-1] + ] * batch_size + + next_tokens_batch, _, attn_mask = batch_padded_tokens_and_mask( + start_pos=start_pos, + tokens=[next_tokens.to_numpy()], + pad_to_multiple_of=self.pipeline_config.pad_to_multiple_of, + ) + return Qwen2Inputs( + tokens=Tensor.from_numpy(next_tokens_batch).to( + self.pipeline_config.devices[0] + ), + input_row_offsets_or_attn_mask=Tensor.from_numpy(attn_mask).to( + self.pipeline_config.devices[0] + ), + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> Qwen2Inputs: + """Prepare the inputs for the next token in multistep execution. + This should avoid any device synchronization or copy operations. + """ + prev_model_inputs = cast(Qwen2Inputs, prev_model_inputs) + if self.pipeline_config.cache_strategy.uses_opaque(): + return self._prepare_ragged_next_token_inputs( + next_tokens, prev_model_inputs + ) + else: + return self._prepare_padded_next_token_inputs( + next_tokens, prev_model_inputs + ) + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.num_key_value_heads, + head_dim=pipeline_config.huggingface_config.hidden_size + // pipeline_config.huggingface_config.num_attention_heads, + page_size=pipeline_config.kv_cache_page_size, + cache_strategy=pipeline_config.cache_strategy, + n_devices=len(pipeline_config.devices), + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.num_hidden_layers + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_position_embeddings, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Qwen2, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_position_embeddings " + f"({pipeline_config.huggingface_config.max_position_embeddings})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.num_hidden_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: List[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.num_hidden_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + + if self.pipeline_config.max_batch_size is None: + batch_size = 1 + else: + batch_size = self.pipeline_config.max_batch_size + 1 + + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(batch_size, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + # Read in weights. + self._weights = self.pipeline_config.load_weights() + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logging.info("Loading serialized model from %s", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logging.info("Building model...") + graph = self._build_graph(self._weights) + logging.info("Compiling...") + before = time.perf_counter() + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logging.info(f"Compiling model took {after - before:.6f} seconds") + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logging.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model + + def _unflatten_kv_inputs( + self, kv_inputs_flat: Sequence[Tensor] + ) -> List[tuple[Tensor, ...]]: + kv_params = self.get_kv_params(self.pipeline_config) + n_devices = kv_params.n_devices + fetch_types = self.kv_manager.input_symbols() + len_of_kv_tuple_per_dev = len(list(fetch_types[0])) + kv_caches_per_dev = [ + tuple( + kv_inputs_flat[ + i * len_of_kv_tuple_per_dev : (i + 1) + * len_of_kv_tuple_per_dev + ] + ) + for i in range(n_devices) + ] + return kv_caches_per_dev + + def _flatten_kv_inputs( + self, kv_caches_per_dev: List[tuple[Union[Tensor, TensorType], ...]] + ) -> Sequence[Union[Tensor, TensorType]]: + return [item for sublist in kv_caches_per_dev for item in sublist] + + def _build_opaque_graph(self, weights: Weights) -> Graph: + device0 = self.pipeline_config.devices[0] + device_ref = DeviceRef(device0.label, device0.id) + tokens_type = TensorType( + DType.int64, shape=["total_seq_len"], device=device_ref + ) + # NOTE: input_row_offsets_len should be batch_size + 1. + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"], device=device_ref + ) + + kv_cache_args = self.kv_manager.input_symbols()[0] + + with Graph( + "Qwen2", + input_types=[ + tokens_type, + input_row_offsets_type, + *kv_cache_args, + ], + ) as graph: + model = transformer( + graph, + self.pipeline_config, + weights, + self.get_kv_params(self.pipeline_config), + ) + tokens, input_row_offsets, *kv_cache = graph.inputs + + assert isinstance(tokens, TensorValue) + assert len(kv_cache) == 4 + assert isinstance(kv_cache[0], TensorValue) + assert isinstance(kv_cache[1], TensorValue) + assert isinstance(kv_cache[2], TensorValue) + assert isinstance(kv_cache[3], TensorValue) + + outputs = model( + tokens, + (kv_cache[0], kv_cache[1], kv_cache[2], kv_cache[3]), + input_row_offsets=input_row_offsets, + ) + graph.output(*outputs) + return graph + + def _build_graph(self, weights: Weights) -> Graph: + g = self._build_opaque_graph(weights) + return g + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + if any(echo for echo in batch_echo): + if model_outputs.logits is None: + warnings.warn( + "Could not get logprobs with echo because the full logits" + f" were not returned by {self.pipeline_config.model_path}" + " model. Please ensure that this model is started with " + "`--enable-echo`." + ) + assert not self.pipeline_config.enable_echo, ( + "Echo was enabled but logits were not returned." + ) + return None + logits = model_outputs.logits.to(CPU()).to_numpy() + + assert model_outputs.next_token_logits is not None + next_token_logits = model_outputs.next_token_logits.to(CPU()).to_numpy() + + sampled_tokens = next_tokens.to(CPU()).to_numpy() + assert isinstance(model_inputs, Qwen2Inputs) + tokens = model_inputs.tokens.to(CPU()).to_numpy() + + if self.pipeline_config.cache_strategy.uses_opaque(): + # Handle the ragged inputs + input_row_offsets = model_inputs.input_row_offsets_or_attn_mask.to( + CPU() + ).to_numpy() + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + start_offset = input_row_offsets[batch_index] + end_offset = input_row_offsets[batch_index + 1] + batch_logits = logits[start_offset:end_offset] + samples = np.concatenate( + ( + tokens[start_offset + 1 : end_offset], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1 + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + else: + # Handle batched inputs. The model pads them to the right so the seq + # lengths can be computed by finding the first 0 token. + seq_lens = np.sum(tokens > 0, axis=1) + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + seq_len = seq_lens[batch_index] + padded_tokens = tokens[batch_index] + + batch_logits = logits[batch_index, :seq_len, :] + samples = np.concatenate( + ( + padded_tokens[1:seq_len], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[ + batch_index : batch_index + 1, : + ] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + return compute_log_probabilities( + _get_logits_and_samples, batch_top_n, batch_echo + ) diff --git a/src/max/pipelines/architectures/replit/__init__.py b/src/max/pipelines/architectures/replit/__init__.py new file mode 100644 index 0000000000..c49833f4ec --- /dev/null +++ b/src/max/pipelines/architectures/replit/__init__.py @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .arch import replit_arch + +__all__ = ["replit_arch"] diff --git a/src/max/pipelines/architectures/replit/arch.py b/src/max/pipelines/architectures/replit/arch.py new file mode 100644 index 0000000000..1bd1dae74b --- /dev/null +++ b/src/max/pipelines/architectures/replit/arch.py @@ -0,0 +1,39 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.pipelines import ( + PipelineTask, + SupportedArchitecture, + SupportedEncoding, + TextTokenizer, + WeightsFormat, +) +from max.pipelines.kv_cache import KVCacheStrategy + +from .model import ReplitModel + +replit_arch = SupportedArchitecture( + name="MPTForCausalLM", + task=PipelineTask.TEXT_GENERATION, + example_repo_ids=[ + "modularai/replit-code-1.5", + ], + default_encoding=SupportedEncoding.bfloat16, + supported_encodings={ + SupportedEncoding.float32: [KVCacheStrategy.CONTINUOUS], + SupportedEncoding.bfloat16: [KVCacheStrategy.CONTINUOUS], + }, + pipeline_model=ReplitModel, + tokenizer=TextTokenizer, + default_weights_format=WeightsFormat.gguf, +) diff --git a/src/max/pipelines/architectures/replit/graph.py b/src/max/pipelines/architectures/replit/graph.py new file mode 100644 index 0000000000..91b01a59c2 --- /dev/null +++ b/src/max/pipelines/architectures/replit/graph.py @@ -0,0 +1,204 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import math +from typing import Optional + +from max.dtype import DType +from max.graph import Graph, TensorType, TensorValue, ops +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import GGUFWeights +from max.pipelines import PipelineConfig +from max.pipelines.kv_cache import ( + FetchContinuousBatchingKVCacheCollection, + KVCacheManager, + KVCacheParams, +) +from max.pipelines.nn import ( + AttentionImpl, + AttentionWithoutMask, + Embedding, + LayerNorm, + Linear, + MHAMaskVariant, + Sequential, + Transformer, + TransformerBlock, +) + + +def _feed_forward( + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + input_dim: int, + hidden_dim: int, + weights: GGUFWeights, +): + return Sequential( + layers=[ + Linear( + weights.ffn_up.weight.allocate( + dtype, [hidden_dim, input_dim], quantization_encoding + ) + ), + ops.gelu, + Linear( + weights.ffn_down.weight.allocate( + dtype, [input_dim, hidden_dim], quantization_encoding + ) + ), + ] + ) + + +def _layer_norm(dims: int, eps: float, weights: GGUFWeights) -> LayerNorm: + return LayerNorm( + weight=weights.weight.allocate(DType.float32, [dims]), + eps=eps, + ) + + +def _attention( + pipeline_config: PipelineConfig, + weights: GGUFWeights, + kv_params: KVCacheParams, + layer_index: int, +) -> AttentionImpl: + k_in_dim = kv_params.n_kv_heads * kv_params.head_dim + v_in_dim = kv_params.n_kv_heads * kv_params.head_dim + q_in_dim = pipeline_config.huggingface_config.d_model + wqkv = TensorValue( + weights.attn_qkv.weight.allocate( + pipeline_config.dtype, + [ + k_in_dim + v_in_dim + q_in_dim, + pipeline_config.huggingface_config.d_model, + ], + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + ) + ) + + return AttentionWithoutMask( + n_heads=pipeline_config.huggingface_config.n_heads, + kv_params=kv_params, + wqkv=wqkv, + wo=Linear( + weights.attn_output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + ) + ), + layer_idx=ops.constant(layer_index, dtype=DType.uint32), + mask_variant=MHAMaskVariant.CAUSAL_ALIBI_MASK, + scale=math.sqrt(1 / kv_params.head_dim), + ) + + +def _transformer( + graph: Graph, + pipeline_config: PipelineConfig, + weights: GGUFWeights, + kv_params: KVCacheParams, +): + with graph: + # Initialize Attention. + layers = [ + TransformerBlock( + attention=_attention( + pipeline_config, weights.blk[i], kv_params, i + ), + mlp=_feed_forward( + pipeline_config.dtype, + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + pipeline_config.huggingface_config.d_model, + 12288, + weights.blk[i], + ), + attention_norm=_layer_norm( + pipeline_config.huggingface_config.d_model, + 1e-5, + weights.blk[i].attn_norm, + ), + mlp_norm=_layer_norm( + pipeline_config.huggingface_config.d_model, + 1e-5, + weights.blk[i].ffn_norm, + ), + ) + for i in range(pipeline_config.huggingface_config.n_layers) + ] + + # Initialize Shared Embedding Weights. + shared_embedding_weight = weights.token_embd.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.vocab_size, + pipeline_config.huggingface_config.d_model, + ], + pipeline_config.quantization_encoding.quantization_encoding, # type: ignore + ) + + return Transformer( + dim=pipeline_config.huggingface_config.d_model, + n_heads=pipeline_config.huggingface_config.n_heads, + layers=layers, + norm=_layer_norm( + pipeline_config.huggingface_config.d_model, + 1e-5, + weights.output_norm, + ), + output=Linear(shared_embedding_weight), + embedding=Embedding(shared_embedding_weight), + kv_params=kv_params, + kv_collection_constructor=FetchContinuousBatchingKVCacheCollection( + kv_params + ), + all_logits=pipeline_config.enable_echo, + ) + + +def _build_graph( + pipeline_config: PipelineConfig, + weights: GGUFWeights, + kv_params: KVCacheParams, + kv_manager: KVCacheManager, +) -> Graph: + # Graph input types. + tokens_type = TensorType(DType.int64, shape=["total_seq_len"]) + input_row_offsets_type = TensorType( + DType.uint32, shape=["input_row_offsets_len"] + ) + kv_cache_types = kv_manager.input_symbols()[0] + + # Initialize Graph. + with Graph( + "replit", + input_types=[ + tokens_type, + input_row_offsets_type, + *kv_cache_types, + ], + ) as graph: + model = _transformer(graph, pipeline_config, weights, kv_params) + tokens, input_row_offsets, *kv_cache_inputs = graph.inputs + outputs = model( + tokens=tokens, + input_row_offsets=input_row_offsets, + kv_cache_inputs=kv_cache_inputs, + ) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/replit/model.py b/src/max/pipelines/architectures/replit/model.py new file mode 100644 index 0000000000..3c2a42a208 --- /dev/null +++ b/src/max/pipelines/architectures/replit/model.py @@ -0,0 +1,327 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time +import warnings +from collections.abc import Sequence +from typing import cast + +import numpy as np +from max.driver import Device, DeviceSpec, Tensor +from max.engine import InferenceSession, Model +from max.graph.weights import GGUFWeights +from max.pipelines import ( + LogProbabilities, + ModelInputs, + ModelOutputs, + PipelineConfig, + PipelineModel, + TextContext, + upper_bounded_default, +) +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheManager, + KVCacheParams, + estimate_kv_cache_size, + load_kv_manager, +) +from max.pipelines.nn.compute_log_probabilities import compute_log_probabilities + +from .graph import _build_graph + +logger = logging.getLogger("max.pipelines") + + +class ReplitInputs(ModelInputs): + """A class representing inputs for the Replit model. + + This class encapsulates the input tensors required for the Replit model execution: + - tokens: A tensor containing the input token IDs + - input_row_offsets: A tensor containing the offsets for each row in the ragged input sequence + """ + + tokens: Tensor + input_row_offsets: Tensor + + def __init__( + self, + tokens: Tensor, + input_row_offsets: Tensor, + kv_cache_inputs: KVCacheInputs | None = None, + ) -> None: + self.tokens = tokens + self.input_row_offsets = input_row_offsets + self.kv_cache_inputs = kv_cache_inputs + + +class ReplitModel(PipelineModel[TextContext]): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + if pipeline_config.device_specs[0] == DeviceSpec.cpu(): + msg = "Replit currently only supported on gpu." + raise ValueError(msg) + + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def execute( + self, + model_inputs: ModelInputs, + ) -> ModelOutputs: + model_inputs = cast(ReplitInputs, model_inputs) + # keep mypy happy. + assert model_inputs.kv_cache_inputs is not None, ( + "Replit has KV cache inputs" + ) + model_outputs = self.model.execute( + model_inputs.tokens, + model_inputs.input_row_offsets, + *model_inputs.kv_cache_inputs, + copy_inputs_to_device=False, + ) + if self.pipeline_config.enable_echo: + assert len(model_outputs) == 2 + assert isinstance(model_outputs[0], Tensor) + assert isinstance(model_outputs[1], Tensor) + return ModelOutputs( + next_token_logits=model_outputs[0], logits=model_outputs[1] + ) + else: + assert len(model_outputs) == 1 + assert isinstance(model_outputs[0], Tensor) + return ModelOutputs(next_token_logits=model_outputs[0]) + + def prepare_initial_token_inputs( + self, + context_batch: Sequence[TextContext], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ReplitInputs: + # Get input_row_offsets: start and end position of each batch in the + # combined total_seq_len dimension. + input_row_offsets = np.cumsum( + [0] + [ctx.active_length for ctx in context_batch], + dtype=np.uint32, + ) + + # Create a ragged token vector of length: sum(len(t) for t in tokens). + tokens = np.concatenate([ctx.next_tokens for ctx in context_batch]) + + if kv_cache_inputs is None: + raise ValueError( + "Replit has KV cache inputs, but got None instead." + ) + return ReplitInputs( + tokens=Tensor.from_numpy(tokens).to( + self.pipeline_config.devices[0] + ), + input_row_offsets=Tensor.from_numpy(input_row_offsets).to( + self.pipeline_config.devices[0] + ), + kv_cache_inputs=kv_cache_inputs, + ) + + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> ReplitInputs: + prev_model_inputs = cast(ReplitInputs, prev_model_inputs) + row_offsets_size = prev_model_inputs.input_row_offsets.shape[0] + next_row_offsets = self._input_row_offsets_prealloc[:row_offsets_size] + return ReplitInputs( + tokens=next_tokens, + input_row_offsets=next_row_offsets, + kv_cache_inputs=prev_model_inputs.kv_cache_inputs, + ) + + @classmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + return pipeline_config.huggingface_config.n_layers + + @classmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + return KVCacheParams( + dtype=pipeline_config.cache_dtype, + n_kv_heads=pipeline_config.huggingface_config.attn_config[ + "kv_n_heads" + ], + head_dim=pipeline_config.huggingface_config.d_model + // pipeline_config.huggingface_config.n_heads, + cache_strategy=pipeline_config.cache_strategy, + page_size=pipeline_config.kv_cache_page_size, + enable_prefix_caching=pipeline_config.enable_prefix_caching, + ) + + @classmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + try: + return upper_bounded_default( + upper_bound=pipeline_config.huggingface_config.max_seq_len, + default=pipeline_config.max_length, + ) + except ValueError as e: + msg = ( + "Unable to infer max_length for Replit, the provided " + f"max_length ({pipeline_config.max_length}) exceeds the " + f"model's max_seq_len " + f"({pipeline_config.huggingface_config.max_seq_len})." + ) + raise ValueError(msg) from e + + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: int, + ) -> KVCacheManager: + return load_kv_manager( + params=self.get_kv_params(self.pipeline_config), + max_batch_size=self.pipeline_config.max_batch_size, + max_seq_len=self.calculate_max_seq_len(self.pipeline_config), + num_layers=self.pipeline_config.huggingface_config.n_layers, + devices=self.pipeline_config.devices, + available_cache_memory=available_cache_memory, + page_size=self.pipeline_config.kv_cache_page_size, + session=session, + ) + + @classmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + return estimate_kv_cache_size( + params=cls.get_kv_params(pipeline_config), + max_batch_size=pipeline_config.max_batch_size, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=pipeline_config.huggingface_config.n_layers, + available_cache_memory=available_cache_memory, + devices=devices, + ) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + # Pre-allocate a buffer for input_row_offsets in multistep execution. + # We do this to avoid materializing and copying a buffer with each multistep step + assert self.pipeline_config.max_batch_size, ( + "Expected max_batch_size to be set" + ) + self._input_row_offsets_prealloc = Tensor.from_numpy( + np.arange(self.pipeline_config.max_batch_size + 1, dtype=np.uint32) + ).to(self.pipeline_config.devices[0]) + + # Read in weights. + weights = self.pipeline_config.load_weights() + if not isinstance(weights, GGUFWeights): + msg = "only gguf weights supported in Replit." + raise ValueError(msg) + + self._weights = weights + + if serialized_path := self.pipeline_config.serialized_model_path: + # Hydrate all weights to be referenced by the serialized path. + weights_registry = {} + for name, weight in self._weights.items(): + weights_registry[name] = weight.raw_tensor() + + logger.info("Loading serialized model from ", serialized_path) + + return session.load( + serialized_path, weights_registry=weights_registry + ) + + else: + logger.info("Building and compiling model...") + before = time.perf_counter() + graph = _build_graph( + self.pipeline_config, + self._weights, + self.get_kv_params(self.pipeline_config), + kv_manager=self.kv_manager, + ) + model = session.load( + graph, weights_registry=self._weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Building and compiling model took {after - before:.6f} seconds" + ) + if ( + export_path + := self.pipeline_config.save_to_serialized_model_path + ): + logger.info("Exporting serialized model to %s", export_path) + model._export_mef(export_path) + return model + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + if any(echo for echo in batch_echo): + if model_outputs.logits is None: + warnings.warn( + "Could not get logprobs with echo because the full logits" + f" were not returned by {self.pipeline_config.model_path}" + " model. Please ensure that this model is started with " + "`--enable-echo`." + ) + assert not self.pipeline_config.enable_echo, ( + "Echo was enabled but logits were not returned." + ) + return None + logits = model_outputs.logits.to_numpy() + assert model_outputs.next_token_logits + next_token_logits = model_outputs.next_token_logits.to_numpy() + + sampled_tokens = next_tokens.to_numpy() + + # Handle the ragged inputs + model_inputs = cast(ReplitInputs, model_inputs) + tokens = model_inputs.tokens.to_numpy() + input_row_offsets = model_inputs.input_row_offsets.to_numpy() + + def _get_logits_and_samples( + batch_index: int, echo: bool + ) -> tuple[np.ndarray, np.ndarray]: + if echo: + start_offset = input_row_offsets[batch_index] + end_offset = input_row_offsets[batch_index + 1] + batch_logits = logits[start_offset:end_offset] + samples = np.concatenate( + ( + tokens[start_offset + 1 : end_offset], + sampled_tokens[batch_index : batch_index + 1], + ) + ) + else: + batch_logits = next_token_logits[batch_index : batch_index + 1] + samples = sampled_tokens[batch_index : batch_index + 1] + return batch_logits, samples + + return compute_log_probabilities( + _get_logits_and_samples, batch_top_n, batch_echo + ) diff --git a/src/max/pipelines/architectures/whisper/encoder.py b/src/max/pipelines/architectures/whisper/encoder.py new file mode 100644 index 0000000000..ce403a6390 --- /dev/null +++ b/src/max/pipelines/architectures/whisper/encoder.py @@ -0,0 +1,187 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +from __future__ import annotations + +import math +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.nn import ( + Conv1D, + Embedding, + LayerNorm, + Linear, + Sequential, +) +from max.pipelines.nn.layer import Layer + + +@dataclass +class WhisperSdpaAttention(Layer): + n_heads: int + head_dim: int + + wq: Linear + wk: Linear + wv: Linear + wo: Linear + + def scaled_dot_product_attention( + self, + xq: TensorValueLike, + xk: TensorValueLike, + xv: TensorValueLike, + ) -> TensorValue: + xq = TensorValue(xq) + xk = TensorValue(xk) + xv = TensorValue(xv) + xq = xq.transpose(1, 2) + xk = xk.transpose(1, 2) + xv = xv.transpose(1, 2) + + scale = math.sqrt(1.0 / self.head_dim) + scores = xq @ ops.transpose(xk, 2, 3) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + return ops.softmax(scores * scale) @ xv + + def __call__( + self, + x: TensorValue, + **kwargs, + ) -> TensorValue: + """Computes attention on x. + + Args: + x: Activations with shape (batch, seq_len, dim). + + Returns the result of WhisperSdpaAttention self attention on the input. + """ + x = TensorValue(x) + batch, seq_len = x.shape[0], x.shape[1] + # matmul weights + xq = self.wq(x) + xk = self.wk(x) + xv = self.wv(x) + + xq = ops.reshape(xq, [batch, seq_len, self.n_heads, self.head_dim]) + + xk = ops.reshape( + xk, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + xv = ops.reshape( + xv, + [ + batch, + seq_len, + self.n_heads, + self.head_dim, + ], + ) + + output = ( + self.scaled_dot_product_attention(xq, xk, xv) + .transpose(1, 2) + .reshape([batch, seq_len, -1]) + ) + return self.wo(output) + + +@dataclass +class WhisperEncoderLayer(Layer): + """Stack of Attention, FeedForward, and LayerNorm layers.""" + + attention: WhisperSdpaAttention + mlp: Sequential + attention_norm: LayerNorm + mlp_norm: LayerNorm + + def __call__( + self, + x: TensorValue, + **kwargs, + ) -> TensorValue: + attn_out = self.attention( + self.attention_norm(x), + **kwargs, + ) + + h = x + attn_out + h = h + self.mlp(self.mlp_norm(h)) + + return h + + +@dataclass +class WhisperEncoder(Layer): + """A Transformer consisting of a stem, positional embeddings, and self attention layers. + + The differences between this transformer and `nn.Transformer` are: + 1. Whisper passes the input through a stem of: + Two convolution layers with a filter width of 3 and the GELU activation + function where the second convolution layer has a stride of two. + + 2. After that, Sinusoidal position embeddings are then added to the output of the stem. + + After that, the usual Transformer blocks (with pre-activation residual blocks) are applied. + We use naive attention where the linear projections have a bias. + + 3. No final transformer linear layer "output". + """ + + conv1: Conv1D + conv2: Conv1D + embed_positions: Embedding + layers: list[WhisperEncoderLayer] + norm: LayerNorm # TODO: Is LayerNorm here not the same as nn.LayerNorm + + all_logits: bool = False + + def __call__( + self, + input_features: TensorValueLike, + **kwargs, + ) -> tuple[TensorValue, ...]: + """ + Args: + input_features: Tensor of shape (batch_size, feature_size, sequence_length) + expected_seq_length = config.max_source_positions * self.conv1.stride[0] * self.conv2.stride[0] + + """ + # Encoder stem: two convolution layers and the GELU activation function. + inputs_embeds = ops.gelu(self.conv1(input_features)) + inputs_embeds = ops.gelu(self.conv2(inputs_embeds)) + + # self.embed_positions.weights layers is of shape = (1500, 1280) + # TODO: Do we need the reshape to (batch_size, sequence_length, feature_size) or is it already in the right shape? + # inputs_embeds = ops.permute(inputs_embeds, [0, 2, 1]) + + # Add sinusoidal position embeddings to the output of the stem + h = inputs_embeds + self.embed_positions.weights + + for _, layer in enumerate(self.layers): + h = layer(h, **kwargs) + + # # A final layer normalization is applied to the encoder output + normalized = self.norm(h) + + # Always return float32 logits, no matter the activation type. + return (ops.cast(normalized, DType.float32),) diff --git a/src/max/pipelines/architectures/whisper/graph.py b/src/max/pipelines/architectures/whisper/graph.py new file mode 100644 index 0000000000..fc3ca1ab5a --- /dev/null +++ b/src/max/pipelines/architectures/whisper/graph.py @@ -0,0 +1,294 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import numpy as np +from max.dtype import DType +from max.graph import Graph, TensorType, ops +from max.graph.weights import SafetensorWeights +from max.pipelines import PipelineConfig +from max.pipelines.nn import ( + Conv1D, + Embedding, + LayerNorm, + Linear, + Sequential, +) + +from .encoder import WhisperEncoder, WhisperEncoderLayer, WhisperSdpaAttention + + +def conv1d( + dtype: DType, + in_channels: int, + kernel_size: int, + stride: int, + padding: int, + out_channels: int, + weights: SafetensorWeights, +) -> Conv1D: + """Creates a 1D convolution layer. + For conv1: ( hugging_face weights: model.encoder.conv1.weight) + in_channels = 128 + out_channels = 1280 + kernel_size = 3 + stride = 1 + padding = 1 + + For conv2: ( hugging_face weights: model.encoder.conv2.weight) + in_channels = 1280 + out_channels = 1280 + kernel_size = 3 + stride = 2 + padding = 1 + """ + # Loaded torch weights shape = (out_channels, in_channels, kernel_size) = [1280, 128, 3]. + # Graph-API Conv1D expects (kernel_size, in_channels, out_channels) = [3, 128, 1280]. + # TODO: Implement Conv1D with bias and use it here. + bias = weights.bias.allocate(dtype, [out_channels]) + return Conv1D( + filter=ops.permute( + weights.weight.allocate( + dtype, [out_channels, in_channels, 1, kernel_size], None + ), + [2, 1, 0], + ), + stride=stride, + padding=padding, + ) + + +def embedding( + dtype: DType, + max_source_positions: int, + hidden_dim: int, + weights: SafetensorWeights, +): + return Embedding( + weights.weight.allocate( + dtype, + [max_source_positions, hidden_dim], + ) + ) + + +def layer_norm(dims: int, eps: float, weights: SafetensorWeights) -> LayerNorm: + # TODO: check the shape of bias + return LayerNorm( + weight=weights.weight.allocate(DType.bfloat16, [dims]), + eps=eps, + bias=weights.bias.allocate(DType.bfloat16, [dims]), + ) + + +def linear( + dtype: DType, + in_features: int, + out_features: int, + weights: SafetensorWeights, +) -> Linear: + # TODO: Check we are passing the correct dim for bias + return Linear( + weights.weight.allocate(dtype, [in_features, out_features], None), + bias=weights.bias.allocate(dtype, [out_features], None), + ) + + +def feed_forward( + dtype: DType, + hidden_dim: int, + feed_forward_length: int, + weights: SafetensorWeights, +): + return Sequential( + layers=[ + linear( + dtype, + feed_forward_length, + hidden_dim, + weights.fc1, + ), + ops.gelu, + linear( + dtype, + hidden_dim, + feed_forward_length, + weights.fc2, + ), + ] + ) + + +def attention( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, + layer_index: int, +): + wq = weights.self_attn.q_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + wk = weights.self_attn.k_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + wv = weights.self_attn.v_proj.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + + bias_q = weights.self_attn.q_proj.bias.allocate( + pipeline_config.dtype, [pipeline_config.huggingface_config.d_model] + ) + bias_v = weights.self_attn.v_proj.bias.allocate( + pipeline_config.dtype, [pipeline_config.huggingface_config.d_model] + ) + bias_k = ops.constant( + np.zeros(pipeline_config.huggingface_config.d_model), + pipeline_config.dtype, + ) + + wo = weights.attn_output.weight.allocate( + pipeline_config.dtype, + [ + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.d_model, + ], + ) + bias_o = weights.self_attn.out_proj.bias.allocate( + pipeline_config.dtype, [pipeline_config.huggingface_config.d_model] + ) + return WhisperSdpaAttention( + n_heads=pipeline_config.huggingface_config.n_heads, + head_dim=pipeline_config.huggingface_config.d_model + // pipeline_config.huggingface_config.encoder_attention_heads, + wq=Linear(wq, bias=bias_q), + wk=Linear(wk, bias=bias_k), + wv=Linear(wv, bias=bias_v), + wo=Linear( + wo, + bias=bias_o, + ), + ) + + +def encoder( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> WhisperEncoder: + conv1 = conv1d( + dtype=pipeline_config.dtype, + in_channels=pipeline_config.huggingface_config.num_mel_bins, + kernel_size=3, + stride=1, + padding=1, + out_channels=pipeline_config.huggingface_config.d_model, + weights=weights.model.encoder.conv1, + ) + + conv2 = conv1d( + dtype=pipeline_config.dtype, + in_channels=pipeline_config.huggingface_config.d_model, + kernel_size=3, + stride=2, + padding=1, + out_channels=pipeline_config.huggingface_config.d_model, + weights=weights.model.encoder.conv2, + ) + + # TODO: Not sure how to handle this. It learns embeddings to a max size. + embed_positions = embedding( + dtype=pipeline_config.dtype, + max_source_positions=pipeline_config.huggingface_config.max_source_positions, + hidden_dim=pipeline_config.huggingface_config.d_model, + weights=weights.model.encoder.embed_positions, + ) + + # EncoderBlocks + # TODO: Which cache strategy to use? Will both Continuous and paged will work? + layers = [ + WhisperEncoderLayer( + attention=attention( + pipeline_config, + weights.language_model.model.layers[i], + layer_idx=ops.constant(i, DType.uint32), # type: ignore + ), + mlp=feed_forward( + pipeline_config.dtype, + pipeline_config.huggingface_config.d_model, + pipeline_config.huggingface_config.encoder_ffn_dim, + weights.model.encoder.layers[i], + ), + attention_norm=layer_norm( + dims=pipeline_config.huggingface_config.d_model, + eps=1e-5, + weights=weights.model.encoder.layers[i].self_attn_layer_norm, + ), + mlp_norm=layer_norm( + dims=pipeline_config.huggingface_config.d_model, + eps=1e-5, + weights=weights.model.encoder.layers[i].final_layer_norm, + ), + ) + for i in range(pipeline_config.huggingface_config.encoder_layers) + ] + + # Hugging Face model uses default eps for nn.LayerNorm which is = 1e-5 + norm = layer_norm( + dims=pipeline_config.huggingface_config.d_model, + eps=1e-5, + weights=weights.model.encoder.layer_norm, + ) + + return WhisperEncoder( + conv1=conv1, + conv2=conv2, + embed_positions=embed_positions, + layers=layers, + norm=norm, + all_logits=False, + ) + + +def build_graph( + pipeline_config: PipelineConfig, + weights: SafetensorWeights, +) -> Graph: + # Audio input_features. + input_features_type = TensorType( + DType.float32, + shape=["batch_size", "num_mel_bins", "sequence_length"], + ) + + # Initialize Graph. + with Graph( + "whisper_audio_encoder", + input_types=[ + input_features_type, + ], + ) as graph: + model = encoder(pipeline_config, weights) + input_features = graph.inputs[0] + outputs = model( + input_features=input_features.tensor, + ) + graph.output(*outputs) + return graph diff --git a/src/max/pipelines/architectures/whisper/model.py b/src/max/pipelines/architectures/whisper/model.py new file mode 100644 index 0000000000..9e1e49eed4 --- /dev/null +++ b/src/max/pipelines/architectures/whisper/model.py @@ -0,0 +1,81 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import logging +import time + +from max.driver import Tensor +from max.engine import InferenceSession, Model +from max.pipelines import ( + ModelInputs, + PipelineConfig, + PipelineModel, +) + +from .graph import build_graph + +logger = logging.getLogger("max.pipelines") + + +class WhisperInputs(ModelInputs): + """A class representing inputs for the Whisper model. + + input_features: + Float values mel features extracted from the raw speech waveform. + Raw speech waveform can be obtained by loading a `.flac` or `.wav` audio file into an array of type `List[float]` or a `numpy.ndarray`, *e.g.* viathe soundfile library (`pip install soundfile`). + To prepare the array into `input_features`, the [`AutoFeatureExtractor`] from the transformers library should be used for extracting the mel features, padding and conversion into a tensor of type `torch.FloatTensor`. See [`~WhisperFeatureExtractor.__call__`] + Shape = (batch_size, feature_size, sequence_length) + + decoder_input_ids: + Indices of decoder input sequence tokens in the vocabulary. Indices can be obtained using [`WhisperTokenizer`]. + Whisper uses the `decoder_start_token_id` as the starting token for `decoder_input_ids` generation. + Shape = (batch_size, target_sequence_length) + """ + + input_features: Tensor + decoder_input_ids: Tensor + + +class Whisper(PipelineModel): + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + super().__init__(pipeline_config, session) + self.model = self.load_model(session) + + def load_model( + self, + session: InferenceSession, + ) -> Model: + """ + Load the Whisper speech recognition model. + """ + self.weights = self.pipeline_config.load_weights() + + logger.info("Building and compiling Whisper encoder-decoder model...") + before = time.perf_counter() + graph = build_graph( + self.pipeline_config, + self.weights, # type: ignore + ) + model = session.load( + graph, weights_registry=self.weights.allocated_weights + ) + after = time.perf_counter() + logger.info( + f"Compiling Whisper model took {after - before:.6f} seconds" + ) + + return model diff --git a/src/max/pipelines/config.py b/src/max/pipelines/config.py new file mode 100644 index 0000000000..005915d889 --- /dev/null +++ b/src/max/pipelines/config.py @@ -0,0 +1,1091 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Standardized config for Pipeline Inference.""" + +from __future__ import annotations + +import datetime +import glob +import json +import logging +import os +import struct +import time +from dataclasses import dataclass, field +from enum import Enum +from functools import cached_property +from pathlib import Path +from typing import Any, Optional, Union, cast + +import huggingface_hub +import torch +from huggingface_hub import constants as hf_hub_constants +from huggingface_hub import errors as hf_hub_errors +from huggingface_hub.utils import tqdm as hf_tqdm +from max.driver import CPU, Accelerator, Device, DeviceSpec, accelerator_count +from max.dtype import DType +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.graph.weights import ( + GGUFWeights, + SafetensorWeights, + Weights, + WeightsAdapter, +) +from max.pipelines.kv_cache import KVCacheStrategy +from tqdm.contrib.concurrent import thread_map +from transformers import AutoConfig + +logger = logging.getLogger("max.pipelines") + + +class PipelineEngine(str, Enum): + MAX = "max" + HUGGINGFACE = "huggingface" + + +class SupportedEncoding(str, Enum): + """All possible encodings which may be supported by a particular model.""" + + float32 = "float32" + bfloat16 = "bfloat16" + q4_k = "q4_k" + q4_0 = "q4_0" + q6_k = "q6_k" + gptq = "gptq" + + def __repr__(self) -> str: + return self.name + + def __str__(self) -> str: + return self.name + + @classmethod + def parse_from_file_name(cls, name: str): + # TODO(AITLIB-127): Robustify detection of quantization encoding + name = name.lower() + if "f32" in name or "float32" in name: + return SupportedEncoding.float32 + elif "bf16" in name or "bfloat16" in name: + return SupportedEncoding.bfloat16 + elif "q4_k_m" in name: + return SupportedEncoding.q4_k + elif "q4_0" in name: + return SupportedEncoding.q4_0 + elif "q6_k" in name: + return SupportedEncoding.q6_k + elif "gptq" in name: + return SupportedEncoding.gptq + else: + return None + + @property + def quantization_encoding(self) -> Optional[QuantizationEncoding]: + if self not in _SUPPORTED_ENCODING_TO_QUANTIZATION_ENCODING: + raise ValueError( + f"SupportedEncoding({self}) does not have corresponding QuantizationEncoding." + ) + return _SUPPORTED_ENCODING_TO_QUANTIZATION_ENCODING[self] + + @property + def dtype(self) -> DType: + """The underlying model dtype associated with a quantization_encoding.""" + if self not in _SUPPORTED_ENCODING_TO_DTYPE: + raise ValueError( + f"SupportedEncoding({self}) does not have corresponding dtype." + ) + return _SUPPORTED_ENCODING_TO_DTYPE[self] + + @property + def cache_dtype(self) -> DType: + """The dtype that must be used in the kvcache for correctness.""" + if self not in _SUPPORTED_ENCODING_TO_CACHE_DTYPE: + raise ValueError( + f"SupportedEncoding({self}) does not have corresponding cache dtype." + ) + return _SUPPORTED_ENCODING_TO_CACHE_DTYPE[self] + + def supported_on(self, device_spec: DeviceSpec) -> bool: + """Returns whether this quantization encoding is supported on a device.""" + return device_spec.device_type in _SUPPORTED_DEVICES[self] + + +_SUPPORTED_ENCODING_TO_DTYPE = { + SupportedEncoding.float32: DType.float32, + SupportedEncoding.bfloat16: DType.bfloat16, + SupportedEncoding.q4_k: DType.uint8, + SupportedEncoding.q4_0: DType.uint8, + SupportedEncoding.q6_k: DType.uint8, + SupportedEncoding.gptq: DType.uint8, +} + + +_SUPPORTED_ENCODING_TO_CACHE_DTYPE = { + SupportedEncoding.float32: DType.float32, + SupportedEncoding.bfloat16: DType.bfloat16, + SupportedEncoding.q4_k: DType.float32, + SupportedEncoding.q4_0: DType.float32, + SupportedEncoding.q6_k: DType.float32, + SupportedEncoding.gptq: DType.bfloat16, +} + +_SUPPORTED_ENCODING_TO_QUANTIZATION_ENCODING = { + SupportedEncoding.float32: None, + SupportedEncoding.bfloat16: None, + SupportedEncoding.q4_k: QuantizationEncoding.Q4_K, + SupportedEncoding.q4_0: QuantizationEncoding.Q4_0, + SupportedEncoding.q6_k: QuantizationEncoding.Q6_K, + SupportedEncoding.gptq: QuantizationEncoding.GPTQ, +} + + +# Basic validation for supported devices for each type of encoding. +_SUPPORTED_DEVICES: dict[SupportedEncoding, tuple[str, ...]] = { + SupportedEncoding.float32: ("cpu", "gpu"), + SupportedEncoding.bfloat16: ("gpu",), + SupportedEncoding.q4_k: ("cpu",), + SupportedEncoding.q4_0: ("cpu",), + SupportedEncoding.q6_k: ("cpu",), + SupportedEncoding.gptq: ("gpu",), +} + + +class WeightsFormat(str, Enum): + gguf = "gguf" + safetensors = "safetensors" + pytorch = "pytorch" + + +class RepoType(str, Enum): + online = "online" + local = "local" + + +# Reference: https://github.com/ggerganov/llama.cpp/blob/eb5c3dc64bd967f2e23c87d9dec195f45468de60/src/llama.cpp#L20778 +class RopeType(str, Enum): + none = "none" + normal = "normal" + neox = "neox" + + +def _repo_exists_with_retry(repo_id: str) -> bool: + """ + Wrapper around huggingface_hub.repo_exists with retry logic. + Retries after 5, 30 and 60 seconds if we get a transient HTTP error. + + See huggingface_hub.repo_exists for details + """ + max_attempts = 3 + retry_delays_in_seconds = [ + 5, + 30, + 60, + ] + + for attempt, delay_in_seconds in enumerate(retry_delays_in_seconds): + try: + return huggingface_hub.repo_exists(repo_id) + except ( + hf_hub_errors.RepositoryNotFoundError, + hf_hub_errors.GatedRepoError, + hf_hub_errors.RevisionNotFoundError, + hf_hub_errors.EntryNotFoundError, + ) as e: + # Forward these specific errors to the user + logger.error(f"Hugging Face repository error: {str(e)}") + raise + except hf_hub_errors.HfHubHTTPError as e: + if attempt == max_attempts - 1: + logger.error( + f"Failed to connect to Hugging Face Hub after {max_attempts} attempts: {str(e)}" + ) + raise + + logger.warning( + f"Transient Hugging Face Hub connection error (attempt {attempt + 1}/{max_attempts}): {str(e)}" + ) + logger.warning( + f"Retrying Hugging Face connection in {delay_in_seconds} seconds..." + ) + time.sleep(delay_in_seconds) + + assert False, ( + "This should never be reached due to the raise in the last attempt" + ) + + +@dataclass +class HuggingFaceRepo: + repo_id: str + trust_remote_code: bool = False + repo_type: Optional[RepoType] = None + + def __post_init__(self) -> None: + # Get repo type. + if not self.repo_type: + if os.path.exists(self.repo_id): + self.repo_type = RepoType.local + else: + self.repo_type = RepoType.online + + if self.repo_type == RepoType.online and not _repo_exists_with_retry( + self.repo_id + ): + raise ValueError(f"model_path: {self.repo_id} does not exist") + + def __str__(self) -> str: + return self.repo_id + + def __repr__(self) -> str: + return self.repo_id + + @cached_property + def info(self) -> huggingface_hub.ModelInfo: + if self.repo_type == RepoType.local: + raise ValueError( + "using model info, on local repos is not supported." + ) + elif self.repo_type == RepoType.online: + return huggingface_hub.model_info( + self.repo_id, files_metadata=False + ) + else: + raise ValueError(f"Unsupported repo type: {self.repo_type}") + + @cached_property + def weight_files(self) -> dict[WeightsFormat, list[str]]: + safetensor_search_pattern = "*.safetensors" + gguf_search_pattern = "*.gguf" + pytorch_search_pattern = "*.bin" + + weight_files = {} + if self.repo_type == RepoType.local: + safetensor_paths = glob.glob( + os.path.join(self.repo_id, safetensor_search_pattern) + ) + gguf_paths = glob.glob( + os.path.join(self.repo_id, gguf_search_pattern) + ) + pytorch_paths = glob.glob( + os.path.join(self.repo_id, pytorch_search_pattern) + ) + elif self.repo_type == RepoType.online: + fs = huggingface_hub.HfFileSystem() + safetensor_paths = cast( + list[str], + fs.glob(f"{self.repo_id}/{safetensor_search_pattern}"), + ) + gguf_paths = cast( + list[str], + fs.glob(f"{self.repo_id}/{gguf_search_pattern}"), + ) + pytorch_paths = cast( + list[str], + fs.glob(f"{self.repo_id}/{pytorch_search_pattern}"), + ) + else: + raise ValueError(f"Unsupported repo type: {self.repo_type}") + + if safetensor_paths: + if len(safetensor_paths) == 1: + # If there is only one weight allow any name. + weight_files[WeightsFormat.safetensors] = [ + safetensor_paths[0].replace(f"{self.repo_id}/", "") + ] + else: + # If there is more than one weight, ignore consolidated tensors. + weight_files[WeightsFormat.safetensors] = [ + f.replace(f"{self.repo_id}/", "") + for f in safetensor_paths + if "consolidated" not in f + ] + + if gguf_paths: + weight_files[WeightsFormat.gguf] = [ + f.replace(f"{self.repo_id}/", "") for f in gguf_paths + ] + + if pytorch_paths: + weight_files[WeightsFormat.pytorch] = [ + f.replace(f"{self.repo_id}/", "") for f in pytorch_paths + ] + + return weight_files + + def size_of(self, filename: str) -> Union[int, None]: + if self.repo_type == RepoType.online: + url = huggingface_hub.hf_hub_url(self.repo_id, filename) + metadata = huggingface_hub.get_hf_file_metadata(url) + return metadata.size + raise NotImplementedError("not implemented for non-online repos.") + + @cached_property + def supported_encodings(self) -> list[SupportedEncoding]: + # TODO(AITLIB-128): Detection of supported encodings in weights can be cleaned up + supported_encodings = set([]) + + # Parse gguf file names. + for gguf_path in self.weight_files.get(WeightsFormat.gguf, []): + encoding = SupportedEncoding.parse_from_file_name(gguf_path) + if encoding: + supported_encodings.add(encoding) + + # Get Safetensor Metadata. + if WeightsFormat.safetensors in self.weight_files: + if self.repo_type == RepoType.local: + # Safetensor repos are assumed to only have one encoding in them. + with open( + os.path.join( + self.repo_id, + self.weight_files[WeightsFormat.safetensors][0], + ), + "rb", + ) as file: + # Read the first 8 bytes of the file + length_bytes = file.read(8) + # Interpret the bytes as a little-endian unsigned 64-bit integer + length_of_header = struct.unpack(" dict[WeightsFormat, list[Path]]: + files = [] + for gguf_file in self.weight_files.get(WeightsFormat.gguf, []): + file_encoding = SupportedEncoding.parse_from_file_name(gguf_file) + if file_encoding == encoding: + files.append(Path(gguf_file)) + + if files: + return {WeightsFormat.gguf: files} + else: + return {} + + def _get_safetensor_files_for_encoding( + self, encoding: SupportedEncoding + ) -> dict[WeightsFormat, list[Path]]: + if ( + WeightsFormat.safetensors in self.weight_files + and encoding == self.supported_encodings[0] + ): + return { + WeightsFormat.safetensors: [ + Path(f) + for f in self.weight_files[WeightsFormat.safetensors] + ] + } + + return {} + + def _get_pytorch_files_for_encoding( + self, encoding: SupportedEncoding + ) -> dict[WeightsFormat, list[Path]]: + if ( + WeightsFormat.pytorch in self.weight_files + and encoding == self.supported_encodings[0] + ): + return { + WeightsFormat.pytorch: [ + Path(f) for f in self.weight_files[WeightsFormat.pytorch] + ] + } + + return {} + + def files_for_encoding( + self, + encoding: SupportedEncoding, + weights_format: Optional[WeightsFormat] = None, + alternate_encoding: Optional[SupportedEncoding] = None, + ) -> dict[WeightsFormat, list[Path]]: + if weights_format == WeightsFormat.pytorch: + logger.warning( + "cannot infer encoding from .bin files, returning all bin files" + ) + return self._get_pytorch_files_for_encoding(encoding) + + if weights_format is WeightsFormat.gguf: + return self._get_gguf_files_for_encoding(encoding) + elif weights_format == WeightsFormat.safetensors: + return self._get_safetensor_files_for_encoding(encoding) + + gguf_files = self._get_gguf_files_for_encoding(encoding) + + safetensor_files = self._get_safetensor_files_for_encoding(encoding) + gguf_files.update(safetensor_files) + + pytorch_files = self._get_pytorch_files_for_encoding(encoding) + gguf_files.update(pytorch_files) + + if not gguf_files and alternate_encoding: + logger.warning( + "Could not find checkpoint with %s encoding, searching for %s files instead.", + encoding, + alternate_encoding, + ) + return self.files_for_encoding(alternate_encoding, weights_format) + return gguf_files + + def file_exists(self, filename: str) -> bool: + return huggingface_hub.file_exists(self.repo_id, filename) + + def download(self, filename: str, force_download: bool = False) -> Path: + return Path( + huggingface_hub.hf_hub_download( + self.repo_id, filename, force_download=force_download + ) + ) + + @property + def formats_available(self) -> list[WeightsFormat]: + return list(self.weight_files.keys()) + + def encoding_for_file(self, file: Union[str, Path]) -> SupportedEncoding: + if str(file).endswith(".safetensors"): + # If this file is safetensors, return the first encoding, as Safetensor repos can only have one. + return self.supported_encodings[0] + elif str(file).endswith(".gguf"): + encoding = SupportedEncoding.parse_from_file_name(str(file)) + if encoding: + return encoding + + raise ValueError( + f"gguf file, but encoding not found in file name: {file}" + ) + elif str(file).endswith(".bin"): + # If this file is pytorch, return the first encoding, as Pytorch repos only likely have one. + return self.supported_encodings[0] + else: + raise ValueError( + f"weight path: {file} not gguf or safetensors, cannot infer encoding from file." + ) + + +@dataclass +class SamplingParams: + top_k: int + enable_structured_output: bool + in_dtype: DType + out_dtype: DType + + +def _scan_available_devices() -> list[DeviceSpec]: + accel_count = accelerator_count() + if accel_count == 0: + return [DeviceSpec.cpu()] + else: + return [DeviceSpec.accelerator(i) for i in range(accel_count)] + + +@dataclass(frozen=False) +class PipelineConfig: + # When adding a new config parameter here, please remember to add a + # description to the `help()` method below + + # NOTE: model_path is made a str of "" by default, to avoid having + # it be Optional to check for None and then littering the codebase with + # asserts just to keep mypy happy. + model_path: str = "" + """repo_id of a Hugging Face model repository to use.""" + + huggingface_repo_id: str = "" + """DEPRECATED: repo_id of a Hugging Face model repository to use. Use `model_path` instead.""" + + huggingface_revision: str = hf_hub_constants.DEFAULT_REVISION + """Branch or Git revision of Hugging Face model repository to use.""" + + engine: Optional[PipelineEngine] = None + """Engine backend to use for serving, 'max' for the max engine, or 'huggingface' as fallback option for improved model coverage.""" + + architecture: Optional[str] = None + """Model architecture to run.""" + + weight_path: list[Path] = field(default_factory=list) + """Optional path or url of the model weights to use.""" + + device_specs: list[DeviceSpec] = field( + default_factory=_scan_available_devices + ) + """Devices to run inference upon. This option is not documented in help() as it shouldn't be used directly via the CLI entrypoint.""" + + quantization_encoding: Optional[SupportedEncoding] = None + """Weight encoding type.""" + + serialized_model_path: Optional[str] = None + """If specified, tries to load a serialized model from this path.""" + + save_to_serialized_model_path: Optional[str] = None + """If specified, tries to save a serialized model to this path.""" + + max_length: Optional[int] = None + """Maximum sequence length of the model.""" + + max_new_tokens: int = -1 + """Maximum number of new tokens to generate during a single inference pass of the model.""" + + max_batch_size: Optional[int] = None + """Maximum batch size to execute with the model. + This is set to one, to minimize memory consumption for the base case, in which a person is + running a local server to test out MAX. For users launching in a server scenario, the expectation + is that this value should be set higher based on server capacity.""" + + max_ce_batch_size: int = 32 + """Maximum cache size to reserve for a single context encoding batch. + The actual limit is the lesser of this and `max_batch_size`.""" + + enable_chunked_prefill: bool = True + """Enable chunked prefill to split context encoding requests into multiple chunks + based on 'target_num_new_tokens'.""" + + enable_in_flight_batching: bool = False + """When enabled, prioritizes token generation by batching it with context + encoding requests. Requires chunked prefill.""" + + cache_strategy: KVCacheStrategy = KVCacheStrategy.MODEL_DEFAULT + """The cache strategy to use. This defaults to `model_default`, which will set the cache + strategy based on the default strategy for the architecture requested. + + You can also force the engine to use a specific caching strategy: `naive` | `continuous` | `paged`. + """ + + max_num_steps: int = -1 + """The number of steps to run for multi-step scheduling. -1 specifies a default value based on + configuration and platform. Ignored for models which are not auto-regressive (e.g. embedding + models).""" + + pad_to_multiple_of: int = 2 + """Pad input tensors to be a multiple of value provided.""" + + kv_cache_page_size: int = 128 + """The number of tokens in a single page in the paged KVCache.""" + + enable_prefix_caching: bool = False + """Whether to enable prefix caching for the paged attention KVCache.""" + + device_memory_utilization: float = 0.9 + """The fraction of available device memory that the process should consume. + + This is used to inform the size of the KVCache workspace: + kv_cache_workspace = (total_free_memory * device_memory_utilization) - model_weights_size + """ + + target_num_new_tokens: Optional[int] = None + """The target number of un-encoded tokens to include in each batch. + If not set, this will be set to a best-guess optimal value based on model, hardware, and available memory.""" + + top_k: int = 1 + """Limits the sampling to the K most probable tokens. This defaults to 1, which enables greedy sampling.""" + + enable_structured_output: bool = False + """Enable structured generation/guided decoding for the server. This allows the user to pass a json + schema in the response_format field, which the LLM will adhere to.""" + + trust_remote_code: bool = False + """Whether or not to allow for custom modelling files on Hugging Face.""" + + force_download: bool = False + """Whether to force download a given file if it's already present in the local cache.""" + + enable_echo: bool = False + """Whether the model should be built with echo capabilities.""" + + rope_type: Optional[RopeType] = None + """Force using a specific rope type: `none` | `normal` | `neox`. Only matters for GGUF weights.""" + + pool_embeddings: bool = True + """Whether to pool embedding outputs.""" + + _huggingface_config: Optional[AutoConfig] = None + """The Hugging Face config associated with the `model-path`.""" + + _devices: list[Device] = field(default_factory=list) + """The underlying initialized devices, created by the specific `device_specs`.""" + + _weight_adapters: dict[WeightsFormat, WeightsAdapter] = field( + default_factory=dict + ) + """Weight adapter for the provided `weight_path`.""" + + _weights_repo_id: Optional[str] = None + """Hugging Face repo id to load weights from only. This should only be set by internal code.""" + + _available_cache_memory: Optional[int] = None + """The amount of available cache memory in bytes. This should only be set by internal code.""" + + _quant_config: Optional[QuantizationConfig] = None + """Optional config for specifying quantization parameters. This should only be set by internal code.""" + + max_cache_batch_size: Optional[int] = None + """DEPRECATED: The maximum cache batch size to use for the model. Use max_batch_size instead.""" + + gpu_profiling: str = os.environ.get("MODULAR_ENABLE_PROFILING", "false") + """Whether to enable GPU profiling of the model.""" + + use_experimental_kernels: str = os.environ.get( + "USE_EXPERIMENTAL_KERNELS", "false" + ) + + draft_model: Optional[str] = None + """Draft model for use during Speculative Decoding.""" + + def __post_init__(self) -> None: + # Validate if a provided max_length is non-negative. + if self.max_length is not None and self.max_length < 0: + raise ValueError("max_length must be non-negative.") + + if self.huggingface_repo_id != "": + logger.warning( + "--huggingface-repo-id is deprecated, use `--model-path` instead. This setting will stop working in a future release." + ) + self.model_path = self.huggingface_repo_id + + if self.max_cache_batch_size is not None: + logger.warning( + "--max-cache-batch-size is deprecated, use `--max-batch-size` instead. This setting will stop working in a future release." + ) + self.max_batch_size = self.max_cache_batch_size + + # Validate that if weight_paths are passed as strings, they are converted to Path. + if isinstance(self.weight_path, tuple): + self.weight_path = list(self.weight_path) + elif not isinstance(self.weight_path, list): + self.weight_path = [self.weight_path] + weight_paths = [] + # Validate that if weight_paths are passed as strings, they are converted to Path. + for path in self.weight_path: + if isinstance(path, str): + path = Path(path) + elif not isinstance(path, Path): + raise ValueError( + "weight_path provided must either be string or Path:" + f" '{path}'" + ) + elif path.is_file(): + # If we already exist on the OS. Dont parse the path, just continue. + weight_paths.append(path) + continue + + # If the path, looks like it may start with a Hugging Face repo id, + # check if the repo_id is the same as the one provided. + # If it is the same, set the weight_path to just be the file_name post repo_id + # If it is different, set the _weights_repo_id to be that repo_id + # and set the path to be the file_name without the repo_id. + if path_pieces := str(path).split("/"): + if len(path_pieces) >= 3: + repo_id = f"{path_pieces[0]}/{path_pieces[1]}" + file_name = "/".join(path_pieces[2:]) + if self.model_path != "" and repo_id == self.model_path: + path = Path(file_name) + elif huggingface_hub.file_exists(repo_id, file_name): + self._weights_repo_id = repo_id + path = Path(file_name) + elif self.model_path == "": + raise ValueError( + "Unable to derive model_path from weight_path, " + "please provide a valid Hugging Face repository id." + ) + + weight_paths.append(path) + + self.weight_path = weight_paths + + # If we cannot infer the weight path, we lean on the model_path + # to provide it. + if len(self.weight_path) == 0: + if self.model_path == "": + raise ValueError( + "model_path must be provided and must be a valid Hugging Face repository" + ) + elif (not os.path.exists(self.model_path)) and ( + not _repo_exists_with_retry(self.model_path) + ): + raise ValueError( + f"{self.model_path} is not a valid Hugging Face repository" + ) + elif self.model_path == "" and self._weights_repo_id is not None: + # weight_path is used and we should derive the repo_id from it. + # At this point, we should have a resolved weight path - be it local or remote HF. + # weight_path should not be used directly anymore. + self.model_path = self._weights_repo_id + + # Set sensible defaults. These are platform-specific. + if self.max_num_steps < 0: + if ( + self.enable_structured_output + or self.device_specs[0] == DeviceSpec.cpu() + ): + self.max_num_steps = 1 + else: + self.max_num_steps = 10 + + if self.max_num_steps > 1 and self.enable_structured_output: + raise ValueError( + "max_num_steps > 1 not supported when enable_structured_output = True" + ) + + if self.enable_structured_output: + if self.device_specs[0] == DeviceSpec.cpu(): + raise ValueError( + "enable_structured_output is not currently supported on CPU." + ) + + if self.gpu_profiling not in ( + "false", + "off", + "no", + "0", + "true", + "on", + "yes", + "1", + "detailed", + ): + raise ValueError("gpu_profiling must be a boolean or 'detailed'") + + if self.draft_model: + if not _repo_exists_with_retry(self.draft_model): + raise ValueError( + "draft_model provided does not exist on HuggingFace." + "Only public HuggingFace draft models currently supported." + ) + + def __getstate__(self) -> dict[str, Any]: + """Override `__getstate__` to exclude the Hugging Face config.""" + state = self.__dict__.copy() + state.pop("_huggingface_config") + state["_devices"] = [] + return state + + @property + def graph_quantization_encoding(self) -> Optional[QuantizationEncoding]: + """Converts the CLI encoding to a MAX graph quantization encoding. + + Returns: + The graph quantization encoding corresponding to the CLI encoding. + + Raises: + ValueError: If no CLI encoding was specified. + """ + if self.quantization_encoding is None: + raise ValueError( + "can't convert `None` CLI encoding to graph quantization encoding" + ) + + return self.quantization_encoding.quantization_encoding + + def finalize_encoding_config(self): + """Depending on the encoding picked, we get some more parameters from the hf config""" + if self.quantization_encoding == SupportedEncoding.gptq: + hf_config = self.huggingface_config + hf_quant_config = hf_config.quantization_config + self._quant_config = QuantizationConfig( + quant_method=hf_quant_config["quant_method"], + bits=hf_quant_config["bits"], + group_size=hf_quant_config["group_size"], + desc_act=hf_quant_config["desc_act"], + sym=hf_quant_config["sym"], + ) + + def update_architecture(self) -> None: + if self.architecture is None: + # Retrieve architecture from model_path. + # This is done without using the huggingface config, to reduce the + # memory stored in this object, before it reaches the model worker. + hf_config = AutoConfig.from_pretrained( + self.model_path, + trust_remote_code=self.trust_remote_code, + ) + + # If we cannot get an architecture from the model_path, + # we cannot map the model to an internal architecture, and cannot + # be run using the MAX engine. + + architectures = getattr(hf_config, "architectures", None) + if architectures: + if len(architectures) > 1: + logger.warning( + "more than one architecture listed in Hugging Face config," + " using the first one." + ) + self.architecture = architectures[0] + else: + logger.warning( + "architectures not listed in Hugging Face config, trying with general `huggingface` engine" + ) + + self.engine = PipelineEngine.HUGGINGFACE + + @property + def huggingface_config(self) -> AutoConfig: + """Given the model_path, return the Hugging Face Config.""" + if self._huggingface_config is None: + # Lazy initialize the Hugging Face config field. + self._huggingface_config = AutoConfig.from_pretrained( + self.model_path, + trust_remote_code=self.trust_remote_code, + ) + assert self._huggingface_config is not None, ( + "Failed to load Hugging Face config" + ) + + return self._huggingface_config + + @property + def dtype(self) -> DType: + if self.quantization_encoding is None: + raise ValueError( + "quantization_encoding must be provided to infer dtype." + ) + + return self.quantization_encoding.dtype + + @property + def cache_dtype(self) -> DType: + if self.quantization_encoding is None: + raise ValueError( + "quantization_encoding must be provided to infer cache dtype." + ) + + return self.quantization_encoding.cache_dtype + + @property + def devices(self) -> list[Device]: + """Initialize and return a list of devices, given a list of device specs.""" + if self._devices: + return self._devices + num_devices_available = accelerator_count() + for device_spec in self.device_specs: + if device_spec.id >= num_devices_available: + msg = f"Device {device_spec.id} was requested but " + if num_devices_available == 0: + msg += "no devices were found." + else: + msg += f"only found {num_devices_available} devices." + raise ValueError(msg) + self._devices.append( + CPU(device_spec.id) + if device_spec.device_type == "cpu" + else Accelerator(device_spec.id) + ) + return self._devices + + @property + def weights_format(self) -> WeightsFormat: + """Identify which format our weights are expected in.""" + + if not self.weight_path: + raise ValueError( + "no weight_path provided cannot infer weights format." + ) + + # Get all weight paths. + if all( + [weight_path.suffix == ".gguf" for weight_path in self.weight_path] + ): + return WeightsFormat.gguf + elif all( + [ + weight_path.suffix == ".safetensors" + for weight_path in self.weight_path + ] + ): + return WeightsFormat.safetensors + elif all( + [weight_path.suffix == ".bin" for weight_path in self.weight_path] + ): + return WeightsFormat.pytorch + else: + raise ValueError( + f"weights type cannot be inferred from {self.weight_path}" + ) + + def weights_size(self) -> int: + size = 0 + hf_repo = HuggingFaceRepo( + ( + self._weights_repo_id + if self._weights_repo_id + else self.model_path + ), + trust_remote_code=self.trust_remote_code, + ) + for file_path in self.weight_path: + if os.path.exists(file_path): + size += os.path.getsize(file_path) + continue + + next_size = hf_repo.size_of(str(file_path)) + + if next_size is None: + raise ValueError( + f"Failed to get size of weight file {file_path}" + ) + size += next_size + + return size + + def download_weights(self) -> None: + # Try to load locally. + if all([os.path.exists(file_path) for file_path in self.weight_path]): + logger.info("All files exist locally, skipping download.") + return + + start_time = datetime.datetime.now() + weights_repo_id = ( + self._weights_repo_id if self._weights_repo_id else self.model_path + ) + logger.info(f"Starting download of model: {weights_repo_id}") + # max_workers=8 setting copied from default for + # huggingface_hub.snapshot_download. + self.weight_path = list( + thread_map( + lambda filename: Path( + huggingface_hub.hf_hub_download( + weights_repo_id, + str(filename), + revision=self.huggingface_revision, + force_download=self.force_download, + ) + ), + self.weight_path, + max_workers=8, + tqdm_class=hf_tqdm, + ) + ) + + logger.info( + f"Finished download of model: {weights_repo_id} in {(datetime.datetime.now() - start_time).total_seconds()} seconds." + ) + + def load_weights(self) -> Weights: + self.download_weights() + + if self.weights_format == WeightsFormat.gguf: + if len(self.weight_path) > 1: + raise ValueError("loading multiple gguf files is not supported") + return GGUFWeights(self.weight_path[0]) + + elif self.weights_format == WeightsFormat.safetensors: + return SafetensorWeights(self.weight_path) + + else: + raise ValueError( + f"loading weights format '{self.weights_format}' not supported" + ) + + @staticmethod + def help() -> dict[str, str]: + return { + "model_path": "Specify the repository ID of a Hugging Face model repository to use. This is used to load both Tokenizers, architectures and model weights.", + "huggingface_repo_id": "DEPRECATED: Use `model_path` instead.", + "huggingface_revision": "Branch or Git revision of Hugging Face model repository to use.", + "engine": "Specify the engine backend to use for serving the model. Options include `max` for the MAX engine, or `huggingface` as a fallback option that provides improved model coverage.", + "architecture": "Deprecated - Please set `model-path` instead. Define the model architecture to run. This should match one of the supported architectures for your selected engine.", + "weight_path": "Provide an optional local path or path relative to the root of a Hugging Face repo to the model weights you want to use. This allows you to specify custom weights instead of using defaults. You may pass multiple, ie. `--weight-path=model-00001-of-00002.safetensors --weight-path=model-00002-of-00002.safetensors`", + "quantization_encoding": "Define the weight encoding type for quantization. This can help optimize performance and memory usage during inference. ie. q4_k, bfloat16 etc.", + "serialized_model_path": "If specified, this flag attempts to load a serialized MEF model from the given path. This is useful for reusing previously saved models.", + "save_to_serialized_model_path": "If specified, this flag attempts to save the current model state to a serialized format at the given path for later use.", + "max_length": "Set the maximum sequence length for input data processed by the model. This must be less than the value specified in the Hugging Face configuration file. The default is derived from the Hugging Face configuration value. Larger values may consume more memory.", + "max_new_tokens": "Specify the maximum number of new tokens to generate during a single inference pass of the model. Default is -1, which means the model will generate until the maximum sequence length is hit, or and eos token is generated.", + "max_batch_size": "Define the maximum cache size reserved for a single batch. This value defaults to 1. Increase this value based on server capacity when deploying in production.", + "max_ce_batch_size": "Set the maximum cache size reserved for a single context encoding batch. The effective limit will be the lesser of this value and `max-cache-batch-size`. Default is 32.", + "enable_chunked_prefill": "Enable chunked prefill to split context encoding requests into multiple chunks based on `target-num-new-tokens`", + "enable_in_flight_batching": "When enabled, prioritizes token generation by batching it with context encoding requests. Requires chunked prefill.", + "max_cache_batch_size": "DEPRECATED: Use `max_batch_size` instead.", + "cache_strategy": "Force a specific cache strategy: 'naive' or 'continuous'. If not provided, the optimal caching strategy for the model requested will be selected.", + "rope_type": "Force using a specific rope type, `none` | `normal' | `nexo`. Only matters for GGUF weights.", + "max_num_steps": "Specify the number of steps to run for multi-step scheduling during inference. Default is set to 1.", + "pad_to_multiple_of": "Pad input tensors to be a multiple of value provided. Default is set to 2.", + "kv_cache_page_size": "The number of tokens in a single page in the paged KVCache. Default is set to 512.", + "enable_prefix_caching": "Whether to enable prefix caching for the paged attention KVCache. This defaults to false.", + "enable_structured_output": "Whether to enable constrained decoding in the text generation pipeline. This defaults to false.", + "device_memory_utilization": "The fraction of available device memory that the process should consume. This is used to inform the size of the KVCache workspace: kv_cache_workspace = (total_free_memory * device_memory_utilization) - model_weights_size. Default is set to 0.9.", + "top_k": "Limit sampling to the top K most probable tokens during generation. This can help control randomness and improve output quality. This defaults to 1, which defaults to greedy sampling.", + "trust_remote_code": "Indicate whether to allow custom modelling files from Hugging Face repositories. Set this to true with caution, as it may introduce security risks.", + "force_download": "Specify whether to forcefully download a file even if it already exists in local cache. Set this to true if you want to ensure you have the latest version.", + "enable_echo": "Whether the model should be built with echo capabilities. This defaults to false.", + "gpu_profiling": "Whether to enable GPU profiling of the model. This defaults to false.", + "draft_model": "Draft model for use in speculative decoding.", + } + + def huggingface_weights_repo(self) -> HuggingFaceRepo: + return HuggingFaceRepo( + ( + self._weights_repo_id + if self._weights_repo_id + else self.model_path + ), + trust_remote_code=self.trust_remote_code, + ) + + @cached_property + def sampling_params(self) -> SamplingParams: + return SamplingParams( + top_k=self.top_k, + enable_structured_output=self.enable_structured_output, + in_dtype=DType.float32, + out_dtype=DType.float32, + ) diff --git a/src/max/pipelines/context.py b/src/max/pipelines/context.py new file mode 100644 index 0000000000..6390eb4403 --- /dev/null +++ b/src/max/pipelines/context.py @@ -0,0 +1,294 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Standardized context object for Pipeline Inference.""" + +from __future__ import annotations + +from typing import Any, Optional, Protocol, Sequence, Union, runtime_checkable + +import numpy as np + +CHUNK_SIZE = 128 + + +@runtime_checkable +class InputContext(Protocol): + """A base class for model contexts, represent model inputs for TokenGenerators.""" + + @property + def cache_seq_id(self) -> int: ... + + @property + def active_idx(self) -> int: ... + + @property + def start_idx(self) -> int: ... + + @property + def end_idx(self) -> int: ... + + @property + def current_length(self) -> int: + """The current length of the sequence, including completed and active tokens.""" + ... + + @property + def max_length(self) -> int | None: + """The maximum length of this sequence.""" + ... + + @property + def log_probabilities(self) -> int: + """When > 0, returns the log probabilities for the top N tokens for each + element token in the sequence.""" + ... + + @property + def log_probabilities_echo(self) -> bool: + """When True, the input tokens are added to the returned logprobs.""" + ... + + @property + def active_length(self) -> int: + """Current sequence length: num tokens input this iteration. + + This will be the prompt size for context encoding, and simply 1 for + token generation. + """ + ... + + @property + def next_tokens(self) -> np.ndarray: + """The next prompt tokens to be input during this iteration. + + This should be a 1D array of tokens of length active_length. + """ + ... + + def update( + self, + new_token: int, + ) -> None: + """Updates the next_tokens and extends existing tokens to include all generated tokens.""" + ... + + def bump_token_indices( + self, + start_idx: Optional[int] = None, + active_idx: Optional[int] = None, + end_idx: Optional[int] = None, + ) -> None: + """Update the start_idx, active_idx and end_idx without manipulating the token array.""" + ... + + @property + def matcher(self) -> Optional["xgr.GrammarMatcher"]: # type: ignore + """An optional xgr Grammar Matcher provided when using structured output.""" + ... + + @property + def json_schema(self) -> str | None: + """A json schema to use during constrained decoding.""" + ... + + def set_matcher(self, matcher: "xgr.GrammarMatcher") -> None: # type: ignore + """Set a grammar matcher for use during constrained decoding.""" + ... + + def reset(self) -> None: + """Resets the context's state by combining all tokens into a new prompt. + This method is used when a request is evicted, meaning that the context + needed to be re-encoded in the following CE iteration.""" + ... + + +class TextContext: + """A base class for model context, specifically for Text model variants.""" + + def __init__( + self, + cache_seq_id: int, + prompt: Union[str, Sequence[int]], + max_length: int | None, + tokens: np.ndarray, + log_probabilities: int = 0, + log_probabilities_echo: bool = False, + json_schema: str | None = None, + ) -> None: + self.cache_seq_id = cache_seq_id + self.prompt = prompt + self.max_length = max_length + + if tokens.ndim != 1: + msg = f"tokens must be one dimensional array: got shape '{tokens.shape}'" + raise ValueError(msg) + + self.size = int(np.ceil(len(tokens) / CHUNK_SIZE) * CHUNK_SIZE) + + # Create a fresh array since the input tokens may be a view or share memory with + # another array in the caller, which prevents us from resizing it directly. + # The extra space is initialized to zero and will be filled with generated tokens. + assert len(tokens) <= self.size + self.tokens = np.zeros(self.size, dtype=tokens.dtype) + self.tokens[: len(tokens)] = tokens + + self._active_idx = len(tokens) + self._start_idx = 0 + self._end_idx = self._active_idx + + self.log_probabilities = log_probabilities + self.log_probabilities_echo = log_probabilities_echo + + self.matcher = None + self.json_schema = json_schema + self.is_initial_prompt = True + + @property + def start_idx(self) -> int: + return self._start_idx + + @property + def active_idx(self) -> int: + return self._active_idx + + @property + def end_idx(self) -> int: + return self._end_idx + + def set_matcher(self, matcher: "xgr.GrammarMatcher") -> None: # type: ignore + self.matcher = matcher + + @property + def current_length(self) -> int: + """The current length of the sequence, including completed and active tokens.""" + return self._end_idx + + @property + def active_length(self) -> int: + """Current sequence length: num tokens input this iteration. + + This will be the prompt size for context encoding, and simply 1 (or more) for + token generation. + """ + return self._active_idx - self._start_idx + + def bump_token_indices( + self, + start_idx: Optional[int] = None, + active_idx: Optional[int] = None, + end_idx: Optional[int] = None, + ) -> None: + """Update the start_idx, active_idx and end_idx without manipulating the token array.""" + new_start_idx = (start_idx if start_idx else 0) + self._start_idx + new_active_idx = (active_idx if active_idx else 0) + self._active_idx + new_end_idx = (end_idx if end_idx else 0) + self._end_idx + + if new_start_idx >= new_active_idx: + msg = f""" + active_idx must always be greater than start_idx, unable to bump token indices + as new start_idx ({new_start_idx}) is greater than new active_idx ({new_active_idx}). + """ + raise ValueError(msg) + + if new_active_idx > new_end_idx: + msg = f""" + end_idx must always be greater than active_idx, unable to bump token indices + as new active_idx ({new_active_idx}) is greater than new end_idx ({new_end_idx}). + """ + raise ValueError(msg) + + self._start_idx = new_start_idx + self._active_idx = new_active_idx + self._end_idx = new_end_idx + + @property + def next_tokens(self) -> np.ndarray: + return self.tokens[self._start_idx : self._active_idx] + + def update( + self, + new_token: int, + ) -> None: + """Updates the next_tokens and extends existing tokens to include all generated tokens.""" + # This is required for chunked prefill. + # The scheduler will update the active_idx via bump_token_indices and pass through the model + # To accomodate for this, if we identify that the active_idx is not at the end of the completed + # token array, we only update the start_idx and active_idx, leaving the token array alone. + if self._active_idx < self._end_idx: + self._start_idx = self._active_idx + self._active_idx = self._end_idx + return + + if self._end_idx >= self.size: + self.size += CHUNK_SIZE + if self.tokens.flags.owndata: + self.tokens.resize(self.size) + else: + self.tokens = np.resize(self.tokens, self.size) + + self.tokens[self._active_idx] = new_token + self._start_idx = self._active_idx + self._active_idx += 1 + self._end_idx += 1 + + # Accept the token, and move the FSM for constrained decoding forward. + if self.matcher: + assert self.matcher.accept_token(new_token) + + self.is_initial_prompt = False + + def reset(self) -> None: + """Resets the context's state by combining all tokens into a new prompt.""" + self._start_idx = 0 + + self.is_initial_prompt = True + + +class TextAndVisionContext(TextContext): + """A base class for model context, specifically for Vision model variants.""" + + def __init__( + self, + cache_seq_id: int, + prompt: Union[str, Sequence[int]], + max_length: int | None, + tokens: np.ndarray, + pixel_values: Union[np.ndarray, list[np.ndarray]], + extra_model_args: dict[str, Any], + log_probabilities: int = 0, + log_probabilities_echo: bool = False, + json_schema: str | None = None, + ) -> None: + super().__init__( + cache_seq_id=cache_seq_id, + prompt=prompt, + max_length=max_length, + tokens=tokens, + log_probabilities=log_probabilities, + log_probabilities_echo=log_probabilities_echo, + json_schema=json_schema, + ) + self.pixel_values = pixel_values + self.extra_model_args = extra_model_args + + def update( + self, + new_token: int, + ) -> None: + """Updates the next_tokens and extends existing tokens to include all generated tokens.""" + super().update(new_token=new_token) + + # Update context not to re-encode the same image in next steps. There are no image tokens + # expected after context encoding. + self.pixel_values = [] diff --git a/src/max/pipelines/dataprocessing/__init__.py b/src/max/pipelines/dataprocessing/__init__.py new file mode 100644 index 0000000000..52a3d7df46 --- /dev/null +++ b/src/max/pipelines/dataprocessing/__init__.py @@ -0,0 +1,30 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .causal_attention_mask import causal_attention_mask +from .causal_attention_mask_with_alibi import causal_attention_mask_with_alibi +from .collate_batch import ( + PaddingDirection, + batch_padded_tokens_and_mask, + collate_batch, +) +from .max_tokens_to_generate import max_tokens_to_generate + +__all__ = [ + "causal_attention_mask", + "causal_attention_mask_with_alibi", + "collate_batch", + "batch_padded_tokens_and_mask", + "PaddingDirection", + "max_tokens_to_generate", +] diff --git a/src/max/pipelines/dataprocessing/causal_attention_mask.py b/src/max/pipelines/dataprocessing/causal_attention_mask.py new file mode 100644 index 0000000000..a882007aaa --- /dev/null +++ b/src/max/pipelines/dataprocessing/causal_attention_mask.py @@ -0,0 +1,67 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import math + +import numpy as np + + +def causal_attention_mask( + original_start_pos: list[int], + original_seq_len: list[int], + pad_to_multiple_of: int = 1, +) -> np.ndarray: + # Each example in the batch has a "start position", which is the length + # of the previously encoded tokens ("context"), and a "sequence length", + # which is the number of additional tokens to be encoded in this pass. + # + # "Causal attention" means that each token can "see" tokens before it, + # as well as itself. + # The attention layer adds the mask to the attention scores and then + # performs a softmax, so for tokens that a given token can "see" the mask + # wants to produce a 0, meaning to pass the attention through as normal, + # and for tokens that can't be "seen" the mask should produce -inf, which + # will result in them being functionally ignored after the softmax operation. + # + # We call the total length "post_seq_len", referring to the total context + # length after this pass concludes. + start_pos: np.ndarray = np.array(original_start_pos, dtype=np.int64) + seq_len: np.ndarray = np.array(original_seq_len, dtype=np.int64) + + # Provided `pad_to_multiple_of` ensure the padded_length is cleanly divisible + # by this multiple. + # If max_len is 1, we are presumably in a token generation phase batch. + # W scenario, padding from 1 -> 2, does not result in a performance gain. + if seq_len.max() == 1: + padded_length = 1 + else: + padded_length = ( + math.ceil(seq_len.max() / pad_to_multiple_of) * pad_to_multiple_of + ) + + # Mask shape: for each token being generated, attend to tokens _before_ it + # in the entire sequence including context. Pad all values to the longest + # sequence length and total length. + post_seq_len = (start_pos + padded_length).max() + mask_shape = (padded_length, post_seq_len) + + # TODO(KERN-782): This should be -inf but softmax saturates with NaNs. + fill_val = -10000.0 + fill_matrix = np.full(mask_shape, fill_val, dtype=np.float32) + + return np.stack( + # Set diagonal to k + 1 so that tokens attend to themselves. + [np.triu(fill_matrix, k=k + 1) for k in start_pos] + ) diff --git a/src/max/pipelines/dataprocessing/causal_attention_mask_with_alibi.py b/src/max/pipelines/dataprocessing/causal_attention_mask_with_alibi.py new file mode 100644 index 0000000000..d3ebbb63bd --- /dev/null +++ b/src/max/pipelines/dataprocessing/causal_attention_mask_with_alibi.py @@ -0,0 +1,68 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import numpy as np + +from .causal_attention_mask import causal_attention_mask + + +def _alibi_bias( + max_seq_len: int, alibi_bias_max: int, n_heads: int +) -> np.ndarray: + # This bias has to be calculated in fp32, as numpy does not have support for bf16. + bias = np.arange(1 - max_seq_len, 1, 1).reshape((1, 1, 1, max_seq_len)) + rounded_n_heads = int( + np.power(np.asfarray(2), np.ceil(np.log2(np.asfarray(n_heads)))) + ) + m = np.arange(1.0, 1.0 + rounded_n_heads) * ( + np.asfarray(alibi_bias_max) / np.asfarray(rounded_n_heads) + ) + + slopes = np.asfarray(1.0) / np.power(2.0, m) + + if rounded_n_heads != n_heads: + slopes = np.concatenate( + [slopes[1:rounded_n_heads:2], slopes[0:rounded_n_heads:2]] + ) + slopes = slopes[0:n_heads] + + slopes = slopes.reshape(1, n_heads, 1, 1) + + alibi_bias = bias * slopes + + return alibi_bias[:, :, :, :max_seq_len] + + +def causal_attention_mask_with_alibi( + original_start_pos: list[int], + original_seq_len: list[int], + alibi_bias_max: int, + n_heads: int, + pad_to_multiple_of: int = 1, +) -> np.ndarray: + # Get original causal mask + causal_mask = causal_attention_mask( + original_start_pos, original_seq_len, pad_to_multiple_of + ) + + max_seq_len = causal_mask.shape[2] + + # Broadcast causal_mask out for n_heads + causal_mask = np.expand_dims(causal_mask, axis=1) + + # Get alibi bias + alibi_bias = _alibi_bias(max_seq_len, alibi_bias_max, n_heads) + + return causal_mask + np.float32(alibi_bias) diff --git a/src/max/pipelines/dataprocessing/collate_batch.py b/src/max/pipelines/dataprocessing/collate_batch.py new file mode 100644 index 0000000000..22d0787785 --- /dev/null +++ b/src/max/pipelines/dataprocessing/collate_batch.py @@ -0,0 +1,120 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Batch padding.""" + +from __future__ import annotations + +import enum +import math + +import numpy as np + +from .causal_attention_mask import causal_attention_mask + + +class PaddingDirection(enum.Enum): + """Padding (from) direction for batch collation.""" + + LEFT = "left" + RIGHT = "right" + + +def collate_batch( + batch: list[np.ndarray], + direction: PaddingDirection = PaddingDirection.RIGHT, + pad_value: int = 0, + batch_size: int | None = None, + pad_to_multiple_of: int = 1, +) -> tuple[np.ndarray, np.ndarray]: + """Generates a single batch tensor from a batch of inputs. + + These input tensors may have different lengths. The `pad_value` will be used + to pad out the inputs to the same length. + + If `batch_size` is present, add additional values to the batch up to that + size. + + Returns: + A tuple of: + A matrix with all rows padded to the max sequence length. + A list with last token indices prior to any padding. + + Raises: + ValueError: if the batch is empty. + NotImplementedError: if the batch contains anything other than vectors. + """ + if not batch: + msg = "Must provide at least one batch item." + raise ValueError(msg) + + if not all(a.ndim == 1 for a in batch): + msg = "Collate only supports rank 1 tensors for now." + raise NotImplementedError(msg) + + max_len = max((len(a) for a in batch), default=0) + + # If max_len is 1, we are presumably in a token generation phase batch. + # W scenario, padding from 1 -> 2, does not result in a performance gain. + if max_len == 1: + pad_to = 1 + else: + pad_to = math.ceil(max_len / pad_to_multiple_of) * pad_to_multiple_of + + def pad(a: np.ndarray) -> np.ndarray: + npad = pad_to - len(a) + if npad == 0: + return a + padding = (npad, 0) if direction == PaddingDirection.LEFT else (0, npad) + return np.pad(a, padding, mode="constant", constant_values=pad_value) + + if batch_size is not None: + pad_batch_item = np.array([pad_value] * pad_to) + batch.extend([pad_batch_item] * (batch_size - len(batch))) + + # Generate unpadded last token index. + unpadded_last_token_index = ( + np.full(len(batch), -1) + if direction == PaddingDirection.LEFT + else np.array([len(a) - 1 for a in batch]) + ) + + return np.stack([pad(a) for a in batch], axis=0), unpadded_last_token_index + + +def batch_padded_tokens_and_mask( + start_pos: list[int], + tokens: list[np.ndarray], + pad_to_multiple_of: int = 1, +) -> tuple[np.ndarray, np.ndarray, np.ndarray]: + """Batches input tokens and computes a batched attention mask. + + Args: + start_pos: index into the end of the KV cache for each batch item. + tokens: unpadded input tokens for this batch. + + Returns: + A (batched tokens, unpadded last token indices, batch attention mask) pair. + """ + # Grab attention mask. + attn_mask = causal_attention_mask( + original_start_pos=start_pos, + original_seq_len=[len(t) for t in tokens], + pad_to_multiple_of=pad_to_multiple_of, + ) + + # Create batched input token tensor by padding all input token tensors + # to the maximum sequence length in the batch. + next_tokens_batch, unpadded_last_token_index = collate_batch( + tokens, batch_size=len(tokens), pad_to_multiple_of=pad_to_multiple_of + ) + return next_tokens_batch, unpadded_last_token_index, attn_mask diff --git a/src/max/pipelines/dataprocessing/max_tokens_to_generate.py b/src/max/pipelines/dataprocessing/max_tokens_to_generate.py new file mode 100644 index 0000000000..5163c06753 --- /dev/null +++ b/src/max/pipelines/dataprocessing/max_tokens_to_generate.py @@ -0,0 +1,24 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +def max_tokens_to_generate( + prompt_size: int, + max_length: int, + max_new_tokens: int = -1, +) -> int: + """Returns the max number of new tokens to generate.""" + _difference_between_max_and_prompt = max(max_length - prompt_size, 0) + if max_new_tokens < 0: + return _difference_between_max_and_prompt + return min(max_new_tokens, _difference_between_max_and_prompt) diff --git a/src/max/pipelines/embeddings_pipeline.py b/src/max/pipelines/embeddings_pipeline.py new file mode 100644 index 0000000000..0c2bb35e8f --- /dev/null +++ b/src/max/pipelines/embeddings_pipeline.py @@ -0,0 +1,85 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Pipeline for running text embeddings.""" + +from __future__ import annotations + +from typing import Any, Type, TypeVar + +from max.engine import InferenceSession +from max.profiler import Tracer, traced + +from .config import PipelineConfig +from .context import InputContext +from .interfaces import EmbeddingsGenerator, EmbeddingsResponse +from .pipeline import PipelineModel + +T = TypeVar("T", bound=InputContext) + + +class EmbeddingsPipeline(EmbeddingsGenerator[T]): + """Generalized token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + pipeline_model: Type[PipelineModel], + **unused_kwargs, + ) -> None: + self._pipeline_config = pipeline_config + # Initialize Session. + session = InferenceSession(devices=self._pipeline_config.devices) + + # Load model. + self._pipeline_model = pipeline_model( + pipeline_config=self._pipeline_config, session=session + ) + + @traced + def encode(self, batch: dict[str, T]) -> dict[str, EmbeddingsResponse]: + """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, + then decode the tokens holistically and return the list of decoded tokens. + """ + + tracer: Tracer = Tracer() + # Flatten our batch for consistent indexing. + context_batch = list(batch.values()) + + tracer.next("prepare_initial_token_inputs") + # Prepare inputs for the first token in multistep execution. + model_inputs = self._pipeline_model.prepare_initial_token_inputs( + context_batch=context_batch, + kv_cache_inputs=None, + ) + + tracer.next("execute") + model_outputs = self._pipeline_model.execute(model_inputs) + + assert model_outputs.logits + # Do the copy to host for each token generated. + tracer.next("logits.to(CPU())") + batch_embeddings = model_outputs.logits.to_numpy() + + # Prepare the response. + res: dict[str, Any] = {} + tracer.push("prepare_response") + for batch_index, request_id in enumerate(batch.keys()): + request_embeddings = batch_embeddings[batch_index] + if not self._pipeline_config.pool_embeddings: + # Remove padded tokens from embeddings + request_embeddings = request_embeddings[ + : context_batch[batch_index].active_length, : + ] + res[request_id] = EmbeddingsResponse(request_embeddings) + return res diff --git a/src/max/pipelines/hf_pipeline.py b/src/max/pipelines/hf_pipeline.py new file mode 100644 index 0000000000..ff252ceec0 --- /dev/null +++ b/src/max/pipelines/hf_pipeline.py @@ -0,0 +1,401 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Generalized Token Generation Pipeline""" + +from __future__ import annotations + +import logging +import warnings +from typing import Optional, cast + +import numpy as np +import torch +from max.driver import Tensor +from transformers import ( + AutoModel, + AutoModelForCausalLM, + AutoTokenizer, + BatchEncoding, +) + +from .config import PipelineConfig +from .context import TextContext +from .interfaces import ( + EmbeddingsGenerator, + EmbeddingsResponse, + TextGenerationResponse, + TextGenerationStatus, + TextResponse, + TokenGenerator, +) +from .kv_cache import ContinuousHFStaticCache + +logger = logging.getLogger("max.pipelines") + +DEFAULT_MAX_SEQ_LEN = 512 + + +class HFTextGenerationPipeline(TokenGenerator[TextContext]): + """HuggingFace text token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + torch_device_type: str, + ): + self._pipeline_config = pipeline_config + self._torch_device = torch.device(torch_device_type) + + self._model = AutoModelForCausalLM.from_pretrained( + pipeline_config.model_path, + trust_remote_code=pipeline_config.trust_remote_code, + ).to(self._torch_device) + self._dtype = self._model.dtype + + if self._model.config.model_type == "gemma2": + raise RuntimeError( + "Gemma2 architecture is currently not supported." + ) + + self._tokenizer = AutoTokenizer.from_pretrained( + pipeline_config.model_path + ) + + eos_token_id = self._tokenizer.eos_token_id + + # Expand eos tokens if more are provided in pipeline_config + if "eos_token_id" in pipeline_config.huggingface_config: + eos_tokens = pipeline_config.huggingface_config.eos_token_id + if isinstance(eos_tokens, int): + if eos_tokens != eos_token_id: + msg = f"eos_token_id provided in huggingface config ({eos_tokens}), does not match provided eos_token_id ({eos_token_id}), using provided eos_token_id" + logger.warning(msg) + + eos_token_id = set([eos_tokens]) + elif isinstance(eos_tokens, list): + if eos_token_id in eos_tokens: + eos_token_id = set(eos_tokens) + else: + eos_token_id = set([eos_token_id]) + else: + msg = f"eos_token_id in huggingface_config, is neither int or list: {eos_tokens}" + logger.warning(msg) + self._eos_token_id = set([eos_token_id]) + else: + eos_token_id = set([eos_token_id]) + + self._eos_token_id = eos_token_id + if self._tokenizer.pad_token is None: + self._tokenizer.pad_token = self._tokenizer.eos_token + + max_batch_size = pipeline_config.max_batch_size + assert max_batch_size is not None, ( + "max_batch_size must be set before constructing ContinuousHFStaticCache" + ) + self._cache = ContinuousHFStaticCache( + config=self._model.config, + max_batch_size=max_batch_size, + max_seq_len=DEFAULT_MAX_SEQ_LEN + if pipeline_config.max_length is None + else pipeline_config.max_length, + dtype=self._dtype, + device=self._torch_device, + ) + + # TODO(deep): Implement sampling and remove this warning + if self._pipeline_config.top_k > 1: + warnings.warn( + "Only argmax sampling is currently implemented, and the top_k config will be ignored", + ) + + def next_token( + self, batch: dict[str, TextContext], num_steps: int + ) -> dict[str, TextGenerationResponse]: + """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, + then decode the tokens holistically and return the list of decoded tokens. + """ + + context_batch = list(batch.values()) + new_sequences = False + + # Claim cache slots for new sequences + for ctx in context_batch: + seq_id = ctx.cache_seq_id + if seq_id in self._cache.available_slots: + self._cache.external_claim([seq_id]) + self._cache.tokens[seq_id] = ctx.next_tokens + new_sequences = True + + cache_seq_ids = [ctx.cache_seq_id for ctx in context_batch] + self._cache.set_active_slots(cache_seq_ids) + + # Initial inputs preparation + input_ids, attention_mask, cache_position = ( + self._prepare_initial_token_inputs( + cache_seq_ids, context_batch, new_sequences + ) + ) + + # Pre-allocate tensor for generated tokens + generated_tokens = torch.zeros( + (len(context_batch), num_steps), + dtype=torch.long, + device=self._torch_device, + ) + + # Generate tokens + with torch.no_grad(): + for step in range(num_steps): + self._cache.set_cache_position(cache_position) + + outputs = self._model( + input_ids=input_ids, + attention_mask=attention_mask, + past_key_values=self._cache, + use_cache=True, + ) + + next_token = outputs.logits[:, -1, :].argmax(dim=-1) + generated_tokens[:, step] = next_token + + # if last step, no need to prepare next batch input + if step == num_steps - 1: + break + + # Next inputs preparation + input_ids, attention_mask, cache_position = ( + self._prepare_next_token_inputs( + cache_seq_ids, + next_tokens=next_token.unsqueeze(-1), + ) + ) + + # Move generated tokens to CPU for processing + generated_tokens = generated_tokens.cpu() + + # Prepare the response, pruning away completed requests as we go. + res: dict[str, TextGenerationResponse] = {} + for batch_idx, (request_id, context) in enumerate(batch.items()): + status = TextGenerationStatus.ACTIVE + res[request_id] = TextGenerationResponse([], status) + for step in range(num_steps): + next_token_id = generated_tokens[batch_idx, step].item() + + # Update context + context.update(next_token_id) + next_tokens = np.array([next_token_id]) + self._cache.tokens[context.cache_seq_id] = np.append( + self._cache.tokens[context.cache_seq_id], next_tokens + ) + + max_length = ( + DEFAULT_MAX_SEQ_LEN + if context.max_length is None + else context.max_length + ) + + if next_token_id in self._eos_token_id: + status = TextGenerationStatus.END_OF_SEQUENCE + res[request_id].update_status(status) + elif context.current_length > max_length: + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].update_status(status) + elif context.current_length == max_length: + res[request_id].append_token(TextResponse(next_token)) + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].update_status(status) + else: + res[request_id].append_token(TextResponse(next_token)) + + if status.is_done: + break + + return res + + def _prepare_initial_token_inputs( + self, + cache_seq_ids: list[int], + context_batch: list[TextContext], + new_sequences: bool, + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + if new_sequences: + # Process all tokens for new sequences + tokens = [ + torch.tensor(self._cache.tokens[ctx.cache_seq_id]) + for ctx in context_batch + ] + padded = self._tokenizer.pad( + BatchEncoding({"input_ids": tokens}), + padding=True, + return_tensors="pt", + ) + + input_ids = padded["input_ids"].to(self._torch_device) + attention_mask = padded["attention_mask"].to(self._torch_device) + + # Initialize attention patterns + for seq_id, mask in zip(cache_seq_ids, attention_mask): + self._cache.update_attention_pattern(seq_id, mask) + else: + # Process only next tokens for the iterative steps + tokens = [torch.tensor(ctx.next_tokens) for ctx in context_batch] + padded = self._tokenizer.pad( + BatchEncoding({"input_ids": tokens}), + padding=True, + return_tensors="pt", + ) + input_ids = padded["input_ids"].to(self._torch_device) + + # Extend attention patterns by 1 + ones = torch.ones(1, dtype=torch.long, device=self._torch_device) + for seq_id in cache_seq_ids: + pattern = self._cache.attention_patterns[seq_id] + self._cache.update_attention_pattern( + seq_id, + torch.cat([pattern, ones]), + ) + + # Get complete attention mask for all sequences + attention_mask = self._cache.get_attention_mask(cache_seq_ids) + + # Calculate cache position + seq_length = input_ids.size(1) + max_length = attention_mask.size(1) + cache_position = torch.arange( + max_length - seq_length, + max_length, + device=self._torch_device, + ) + + return input_ids, attention_mask, cache_position + + def _prepare_next_token_inputs( + self, + cache_seq_ids: list[int], + next_tokens: Optional[Tensor] = None, + ) -> tuple[torch.Tensor, torch.Tensor, torch.Tensor]: + # Process only next tokens for the iterative steps + encoded_input = BatchEncoding({"input_ids": next_tokens}) + padded = self._tokenizer.pad( + encoded_input, padding=True, return_tensors="pt" + ) + input_ids = padded["input_ids"].to(self._torch_device) + + # Extend attention patterns by 1 + ones = torch.ones(1, dtype=torch.long, device=self._torch_device) + for seq_id in cache_seq_ids: + pattern = self._cache.attention_patterns[seq_id] + self._cache.update_attention_pattern( + seq_id, + torch.cat([pattern, ones]), + ) + + attention_mask = self._cache.get_attention_mask(cache_seq_ids) + + # Calculate cache position + seq_length = input_ids.size(1) + max_length = attention_mask.size(1) + cache_position = torch.arange( + max_length - seq_length, + max_length, + device=self._torch_device, + ) + + return input_ids, attention_mask, cache_position + + def release(self, context: TextContext) -> None: + if context.cache_seq_id not in self._cache.available_slots: + self._cache.release(context.cache_seq_id) + + +class HFEmbeddingsPipeline(EmbeddingsGenerator[TextContext]): + """Generalized token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + torch_device_type: str, + ) -> None: + self._pipeline_config = pipeline_config + self._torch_device = torch.device(torch_device_type) + self._model = AutoModel.from_pretrained( + pipeline_config.model_path, + trust_remote_code=pipeline_config.trust_remote_code, + ).to(self._torch_device) + self._tokenizer = AutoTokenizer.from_pretrained( + pipeline_config.model_path + ) + + def prepare_initial_token_inputs( + self, + context_batch: list[TextContext], + ) -> tuple[torch.Tensor, torch.Tensor]: + # Get tokens and seq_ids. + tokens = [ctx.next_tokens for ctx in context_batch] + + # Pad tokens for the batch. + padded = self._tokenizer.pad( + BatchEncoding({"input_ids": tokens}), + padding=True, + return_tensors="pt", + pad_to_multiple_of=2, + ) + input_ids = cast(torch.Tensor, padded["input_ids"]).to( + self._torch_device + ) + attention_mask = cast(torch.Tensor, padded["attention_mask"]).to( + self._torch_device + ) + return input_ids, attention_mask + + def encode( + self, batch: dict[str, TextContext] + ) -> dict[str, EmbeddingsResponse]: + """Encodes a batch of text inputs.""" + + # Flatten our batch for consistent indexing. + context_batch = list(batch.values()) + input_ids, attention_mask = self.prepare_initial_token_inputs( + context_batch + ) + + outputs = self._model( + input_ids=input_ids, attention_mask=attention_mask + ) + # Pool the embeddings of together, and copy to cpu. + batch_embeddings = ( + _mean_pooling(outputs, attention_mask).cpu().detach().numpy() + ) + + # Prepare the response. + res: dict[str, EmbeddingsResponse] = {} + for batch_index, request_id in enumerate(batch.keys()): + request_embeddings = batch_embeddings[batch_index] + res[request_id] = EmbeddingsResponse(request_embeddings) + return res + + +# Taken from the sentence piece transformer: +# https://huggingface.co/sentence-transformers/all-mpnet-base-v2 +# Mean Pooling - Take attention mask into account for correct averaging +def _mean_pooling(model_output, attention_mask): + token_embeddings = model_output[ + 0 + ] # First element of model_output contains all token embeddings + input_mask_expanded = ( + attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float() + ) + return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp( + input_mask_expanded.sum(1), min=1e-9 + ) diff --git a/src/max/pipelines/hf_utils.py b/src/max/pipelines/hf_utils.py new file mode 100644 index 0000000000..698f62f49a --- /dev/null +++ b/src/max/pipelines/hf_utils.py @@ -0,0 +1,56 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Utilities for interacting with HuggingFace Files/Repos.""" + +from __future__ import annotations + +from dataclasses import dataclass +from pathlib import Path + +from huggingface_hub import ( + file_exists, + get_hf_file_metadata, + hf_hub_download, + hf_hub_url, +) + + +@dataclass(frozen=True) +class HuggingFaceFile: + """A simple object for tracking huggingface model metadata. + The repo_id will frequently be used to load a tokenizer, + whereas the filename is used to download model weights.""" + + repo_id: str + filename: str + revision: str | None = None + + def download(self, force_download: bool = False) -> Path: + """Download the file and return the file path where the data is saved locally.""" + return Path( + hf_hub_download( + self.repo_id, + self.filename, + revision=self.revision, + force_download=force_download, + ) + ) + + def size(self) -> int | None: + url = hf_hub_url(self.repo_id, self.filename, revision=self.revision) + metadata = get_hf_file_metadata(url) + return metadata.size + + def exists(self) -> bool: + return file_exists(self.repo_id, self.filename, revision=self.revision) diff --git a/src/max/pipelines/interfaces/__init__.py b/src/max/pipelines/interfaces/__init__.py new file mode 100644 index 0000000000..804d0d8d6c --- /dev/null +++ b/src/max/pipelines/interfaces/__init__.py @@ -0,0 +1,54 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Top level imports for pipeline interfaces.""" + +from .embeddings_generation import ( + EmbeddingsGenerator, +) +from .response import ( + EmbeddingsResponse, + LogProbabilities, + TextGenerationResponse, + TextGenerationStatus, + TextResponse, +) +from .tasks import PipelineTask +from .text_generation import ( + PipelineTokenizer, + TokenGenerator, + TokenGeneratorContext, + TokenGeneratorRequest, + TokenGeneratorRequestFunction, + TokenGeneratorRequestMessage, + TokenGeneratorRequestTool, + TokenGeneratorResponseFormat, +) + +__all__ = [ + "EmbeddingsResponse", + "LogProbabilities", + "PipelineTask", + "PipelineTokenizer", + "TextResponse", + "TokenGenerator", + "TokenGeneratorContext", + "TokenGeneratorRequest", + "TokenGeneratorRequestFunction", + "TokenGeneratorRequestMessage", + "TokenGeneratorRequestTool", + "TokenGeneratorResponseFormat", + "EmbeddingsGenerator", + "TextGenerationResponse", + "TextGenerationStatus", +] diff --git a/src/max/pipelines/interfaces/embeddings_generation.py b/src/max/pipelines/interfaces/embeddings_generation.py new file mode 100644 index 0000000000..99846df2ed --- /dev/null +++ b/src/max/pipelines/interfaces/embeddings_generation.py @@ -0,0 +1,39 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Interfaces for embeddings generation pipeline behaviors.""" + +from typing import Any, Generic, Protocol, TypeVar, runtime_checkable + +EmbeddingsGeneratorContext = TypeVar("EmbeddingsGeneratorContext") + + +@runtime_checkable +class EmbeddingsGenerator(Generic[EmbeddingsGeneratorContext], Protocol): + """Interface for LLM embeddings-generator models.""" + + def encode( + self, batch: dict[str, EmbeddingsGeneratorContext] + ) -> dict[str, Any]: + """Computes embeddings for a batch of inputs. + + Args: + batch (dict[str, EmbeddingsGeneratorContext]): Batch of contexts to generate + embeddings for. + + Returns: + dict[str, Any]: Dictionary mapping request IDs to their corresponding + embeddings. Each embedding is typically a numpy array or tensor of + floating point values. + """ + ... diff --git a/src/max/pipelines/interfaces/response.py b/src/max/pipelines/interfaces/response.py new file mode 100644 index 0000000000..573326871b --- /dev/null +++ b/src/max/pipelines/interfaces/response.py @@ -0,0 +1,139 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Standardized response object for Pipeline Inference.""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import Enum + +import numpy as np + + +class LogProbabilities: + """Log probabilities for an individual output token. + + Attributes: + token_log_probabilities (list[float]): Probabilities of each token. + top_log_probabilities (list[dict[int, float]]): Top tokens and their corresponding probabilities. + + """ + + def __init__( + self, + token_log_probabilities: list[float], + top_log_probabilities: list[dict[int, float]], + ) -> None: + self.token_log_probabilities = token_log_probabilities + self.top_log_probabilities = top_log_probabilities + + def __eq__(self, other: object) -> bool: + if not isinstance(other, LogProbabilities): + return False + + if len(self.token_log_probabilities) != len( + other.token_log_probabilities + ): + return False + + if not all( + a == b + for a, b in zip( + self.token_log_probabilities, other.token_log_probabilities + ) + ): + return False + + if len(self.top_log_probabilities) != len(other.top_log_probabilities): + return False + + if not all( + a == b + for a, b in zip( + self.top_log_probabilities, other.top_log_probabilities + ) + ): + return False + + return True + + +class TextResponse: + """A base class for model response, specifically for Text model variants. + + Attributes: + next_token (int | str): Encoded predicted next token. + log_probabilities (LogProbabilities | None): Log probabilities of each output token. + + """ + + def __init__( + self, + next_token: int | str, + log_probabilities: LogProbabilities | None = None, + ) -> None: + self.next_token = next_token + self.log_probabilities = log_probabilities + + def __eq__(self, value: object) -> bool: + if not isinstance(value, TextResponse): + return False + + return ( + self.next_token == value.next_token + and self.log_probabilities == value.log_probabilities + ) + + +@dataclass +class EmbeddingsResponse: + """Container for the response from embeddings pipeline.""" + + embeddings: np.ndarray + + +class TextGenerationStatus(str, Enum): + ACTIVE = "active" + END_OF_SEQUENCE = "end_of_sequence" + MAXIMUM_LENGTH = "maximum_length" + + @property + def is_done(self) -> bool: + return self is not TextGenerationStatus.ACTIVE + + +class TextGenerationResponse: + def __init__( + self, tokens: list[TextResponse], final_status: TextGenerationStatus + ) -> None: + self._tokens = tokens + self._final_status = final_status + + @property + def is_done(self) -> bool: + return self._final_status.is_done + + @property + def tokens(self) -> list[TextResponse]: + return self._tokens + + @property + def final_status(self) -> TextGenerationStatus: + return self._final_status + + def append_token(self, token: TextResponse) -> None: + self._tokens.append(token) + + def update_status(self, status: TextGenerationStatus) -> None: + self._final_status = status diff --git a/src/max/pipelines/interfaces/tasks.py b/src/max/pipelines/interfaces/tasks.py new file mode 100644 index 0000000000..553a4705c1 --- /dev/null +++ b/src/max/pipelines/interfaces/tasks.py @@ -0,0 +1,21 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Pipeline Tasks.""" + +from enum import Enum + + +class PipelineTask(str, Enum): + TEXT_GENERATION = "text_generation" + EMBEDDINGS_GENERATION = "embeddings_generation" diff --git a/src/max/pipelines/interfaces/text_generation.py b/src/max/pipelines/interfaces/text_generation.py new file mode 100644 index 0000000000..e329e0829b --- /dev/null +++ b/src/max/pipelines/interfaces/text_generation.py @@ -0,0 +1,279 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Interfaces for text generation pipeline behaviors.""" + +from dataclasses import dataclass +from typing import ( + Any, + Generic, + List, + Literal, + Optional, + Protocol, + Sequence, + TypedDict, + TypeVar, + Union, + runtime_checkable, +) + +from .response import TextGenerationResponse + + +class TokenGeneratorRequestFunction(TypedDict): + name: str + description: str + parameters: dict + + +class TokenGeneratorRequestTool(TypedDict): + type: str + function: TokenGeneratorRequestFunction + + +class TokenGeneratorResponseFormat(TypedDict): + type: str + json_schema: dict + + +class TokenGeneratorRequestMessage(TypedDict): + role: Literal["system", "user", "assistant"] + content: Union[str, list[dict[str, Any]]] + """Content can be simple string or a list of message parts of different + modalities. + + For example: + + .. code-block:: json + + { + "role": "user", + "content": "What'\''s the weather like in Boston today?" + } + + Or: + + .. code-block:: json + + { + "role": "user", + "content": [ + { + "type": "text", + "text": "What'\''s in this image?" + }, + { + "type": "image_url", + "image_url": { + "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" + } + } + ] + } + """ + + +@dataclass(frozen=True) +class TokenGeneratorRequest: + id: str + """ + A unique identifier for the request. This ID can be used to trace and log + the request throughout its lifecycle, facilitating debugging and tracking. + """ + index: int + """ + The sequence order of this request within a batch. This is useful for + maintaining the order of requests when processing multiple requests + simultaneously, ensuring that responses can be matched back to their + corresponding requests accurately. + """ + model_name: str + """ + The name of the model to be used for generating tokens. This should match + the available models on the server and determines the behavior and + capabilities of the response generation. + """ + prompt: Union[str, Sequence[int], None] = None + """ + The prompt to be processed by the model. This field supports legacy + completion APIs and can accept either a string or a sequence of integers + representing token IDs. If not provided, the model may generate output + based on the messages field. + """ + messages: Optional[list[TokenGeneratorRequestMessage]] = None + """ + A list of messages for chat-based interactions. This is used in chat + completion APIs, where each message represents a turn in the conversation. + If provided, the model will generate responses based on these messages. + """ + images: Optional[list[bytes]] = None + """ + A list of image byte arrays that can be included as part of the request. + This field is optional and may be used for multimodal inputs where images + are relevant to the prompt or task. + """ + tools: Optional[list[TokenGeneratorRequestTool]] = None + """ + A list of tools that can be invoked during the generation process. This + allows the model to utilize external functionalities or APIs to enhance its + responses. + """ + response_format: Optional[TokenGeneratorResponseFormat] = None + """ + Specifies the desired format for the model's output. When set, it enables + structured generation, which adheres to the json_schema provided. + """ + max_new_tokens: Optional[int] = None + """ + The maximum number of new tokens to generate in the response. If not set, + the model may generate tokens until it reaches its internal limits or based + on other stopping criteria. + """ + timestamp_ns: int = 0 + """ + The time (in nanoseconds) when the request was received by the server. This + can be useful for performance monitoring and logging purposes. + """ + request_path: str = "/" + """ + The endpoint path for the request. This is typically used for routing and + logging requests within the server infrastructure. + """ + logprobs: int = 0 + """ + The number of top log probabilities to return for each generated token. A value + of 0 means that log probabilities will not be returned. Useful for analyzing + model confidence in its predictions. + """ + echo: bool = False + """ + If set to True, the response will include the original prompt along with the + generated output. This can be useful for debugging or when you want to see how + the input relates to the output. + """ + stop: Optional[Union[str, List[str]]] = None + """ + Optional list of stop expressions (see: https://platform.openai.com/docs/api-reference/chat/create#chat-create-stop) + """ + + def __str__(self) -> str: + txt = f"Id: {self.id}" + if self.max_new_tokens: + txt += f", MaxNewTokens: {self.max_new_tokens}" + return txt + + +TokenGeneratorContext = TypeVar("TokenGeneratorContext") +TokenGeneratorBatchKey = TypeVar("TokenGeneratorBatchKey") + +TokenizerEncoded = TypeVar("TokenizerEncoded") + + +@runtime_checkable +class PipelineTokenizer( + Generic[TokenGeneratorContext, TokenizerEncoded], Protocol +): + """Interface for LLM tokenizers.""" + + @property + def eos(self) -> int: + """The end of sequence token for this tokenizer.""" + ... + + @property + def expects_content_wrapping(self) -> bool: + """If true, this tokenizer expects messages to have a 'content' property. + Text messages are formatted as + { "type" : "text", "content" : "text content"} + instead of, the OpenAI spec. + { "type" : "text", "text": "text content" }. + NOTE: Multimodal messages omit the content property. + Both "image_urls" and "image" content parts are converted to simply + { "type" : "image" } + Their content is provided as byte arrays and by the top level property on + the request object, i.e. "TokenGeneratorRequest.images". + """ + ... + + async def new_context( + self, request: TokenGeneratorRequest + ) -> TokenGeneratorContext: + """Creates a new context from a request object. This is sent to the + worker process once and then cached locally. + + Args: + request (TokenGeneratorRequest): Incoming request. + + Returns: + TokenGeneratorContext: Initialized context. + """ + ... + + async def encode(self, prompt: str) -> TokenizerEncoded: + """Encodes text prompts as tokens. + + Args: + prompt (str): Un-encoded prompt text. + + Raises: + ValueError: If the prompt exceeds the configured maximum length. + + Returns: + TokenizerEncoded: Encoded prompt tokens. + """ + ... + + async def decode( + self, + context: TokenGeneratorContext, + encoded: TokenizerEncoded, + **kwargs, + ) -> str: + """Decodes response tokens to text. + + Args: + context (TokenGeneratorContext): Current generation context. + encoded (TokenizerEncoded): Encoded response tokens. + + Returns: + str: Un-encoded response text. + """ + ... + + +@runtime_checkable +class TokenGenerator(Generic[TokenGeneratorContext], Protocol): + """Interface for LLM token-generator models.""" + + def next_token( + self, batch: dict[str, TokenGeneratorContext], num_steps: int + ) -> dict[str, TextGenerationResponse]: + """Computes the next token response for a single batch. + + Args: + batch (dict[str, TokenGeneratorContext]): Batch of contexts. + num_steps int: Number of tokens to generate. + + Returns: + list[dict[str, TextResponse]]: List of encoded responses (indexed by req. ID) + """ + ... + + def release(self, context: TokenGeneratorContext) -> None: + """Releases resources associated with this context. + + Args: + context (TokenGeneratorContext): Finished context. + """ + ... diff --git a/src/max/pipelines/kv_cache/__init__.py b/src/max/pipelines/kv_cache/__init__.py new file mode 100644 index 0000000000..0008512c89 --- /dev/null +++ b/src/max/pipelines/kv_cache/__init__.py @@ -0,0 +1,183 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Dict, List, Optional, Type + +from max.driver import Device +from max.dtype import DType +from max.engine import InferenceSession + +from .cache_params import KVCacheParams, KVCacheStrategy +from .continuous_batching_cache import ( + ContinuousBatchingKVCache, + ContinuousBatchingKVCacheCollection, + ContinuousBatchingKVCacheCollectionType, + ContinuousBatchingKVCacheManager, + ContinuousBatchingKVCacheType, + FetchContinuousBatchingKVCacheCollection, +) +from .hf import ContinuousHFStaticCache +from .manager import ( + KVCacheInputs, + KVCacheInputsSequence, + KVCacheInputSymbols, + KVCacheManager, + PaddedKVCacheInputs, + RaggedKVCacheInputs, +) +from .naive_cache import NaiveKVCacheManager +from .paged_cache import ( + FetchPagedKVCacheCollection, + PagedKVCacheCollection, + PagedKVCacheManager, + PagedKVCacheType, +) +from .radix_trie import RadixTrie + +CACHE_MANAGER_REGISTRY: dict[KVCacheStrategy, Type[KVCacheManager]] = { + KVCacheStrategy.CONTINUOUS: ContinuousBatchingKVCacheManager, + KVCacheStrategy.NAIVE: NaiveKVCacheManager, + KVCacheStrategy.PAGED: PagedKVCacheManager, +} + + +def load_kv_manager( + params: KVCacheParams, + max_batch_size: Optional[int], + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + available_cache_memory: Optional[int] = None, + page_size: Optional[int] = 512, +) -> KVCacheManager: + assert max_batch_size is not None, "Expected max_batch_size to be set" + assert max_batch_size > 0, "max_batch_size must be greater than 0" + if params.cache_strategy == KVCacheStrategy.CONTINUOUS: + return ContinuousBatchingKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + ) + elif params.cache_strategy == KVCacheStrategy.NAIVE: + return NaiveKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + ) + elif params.cache_strategy == KVCacheStrategy.PAGED: + if page_size is None: + msg = ( + "Missing required argument page_size for KVCacheStrategy.PAGED" + ) + raise ValueError(msg) + + # TODO(KERN-1308) remove this validation as we generalize page_size + if page_size % 128 != 0 or page_size < 128: + msg = "Page size must be a multiple of 128 and at least 128." + raise ValueError(msg) + + if available_cache_memory is None: + msg = "Missing required argument available_cache_memory for KVCacheStrategy.PAGED" + raise ValueError(msg) + + return PagedKVCacheManager( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + cache_memory=available_cache_memory, + page_size=page_size, + ) + else: + msg = f"cache type: {params.cache_strategy} not supported." + raise ValueError(msg) + + +def estimate_kv_cache_size( + params: KVCacheParams, + max_batch_size: Optional[int], + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, +) -> int: + assert max_batch_size is not None, "Expected max_batch_size to be set" + assert max_batch_size > 0, "max_batch_size must be greater than 0" + if params.cache_strategy not in CACHE_MANAGER_REGISTRY: + msg = f"cache type: {params.cache_strategy} not supported." + raise ValueError(msg) + + return CACHE_MANAGER_REGISTRY[params.cache_strategy].estimated_memory_size( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + available_cache_memory=available_cache_memory, + devices=devices, + **kwargs, + ) + + +def infer_optimal_batch_size( + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, +) -> int: + return CACHE_MANAGER_REGISTRY[ + params.cache_strategy + ].infer_optimal_batch_size( + params=params, + max_seq_len=max_seq_len, + num_layers=num_layers, + available_cache_memory=available_cache_memory, + devices=devices, + **kwargs, + ) + + +__all__ = [ + "KVCacheParams", + "KVCacheStrategy", + "ContinuousBatchingKVCache", + "ContinuousBatchingKVCacheCollection", + "ContinuousBatchingKVCacheCollectionType", + "ContinuousBatchingKVCacheManager", + "ContinuousBatchingKVCacheType", + "FetchContinuousBatchingKVCacheCollection", + "FetchPagedKVCacheCollection", + "PagedKVCacheManager", + "PagedKVCacheCollection", + "PagedKVCacheType", + "KVCacheManager", + "KVCacheInputs", + "KVCacheInputsSequence", + "RaggedKVCacheInputs", + "PaddedKVCacheInputs", + "KVCacheInputSymbols", + "NaiveKVCacheManager", + "ContinuousHFStaticCache", + "RadixTrie", +] diff --git a/src/max/pipelines/kv_cache/_utils.py b/src/max/pipelines/kv_cache/_utils.py new file mode 100644 index 0000000000..6942ad7823 --- /dev/null +++ b/src/max/pipelines/kv_cache/_utils.py @@ -0,0 +1,33 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Utility functions for KV cache.""" + +import numpy as np +from max.driver import Tensor + + +def build_max_lengths_tensor( + num_steps: int, max_seq_length: int, max_cache_length: int +) -> Tensor: + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_np = np.empty((num_steps, 2), np.uint32) + step_max_seq_length = max_seq_length + step_max_cache_length = max_cache_length + for step in range(num_steps): + max_lengths_np[step, 0] = step_max_seq_length + max_lengths_np[step, 1] = step_max_cache_length + step_max_cache_length += step_max_seq_length + step_max_seq_length = 1 + return Tensor.from_numpy(max_lengths_np) diff --git a/src/max/pipelines/kv_cache/cache_params.py b/src/max/pipelines/kv_cache/cache_params.py new file mode 100644 index 0000000000..6ca3a34491 --- /dev/null +++ b/src/max/pipelines/kv_cache/cache_params.py @@ -0,0 +1,84 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from enum import Enum +from typing import Optional + +from max.dtype import DType + + +class KVCacheStrategy(str, Enum): + MODEL_DEFAULT = "model_default" + NAIVE = "naive" + CONTINUOUS = "continuous" + PAGED = "paged" + + def __str__(self) -> str: + return self.value + + def __repr__(self) -> str: + return self.value + + def kernel_substring(self) -> str: + """Returns the common substring that we include in the kernel name for this caching strategy.""" + if self == KVCacheStrategy.CONTINUOUS: + return "continuous_batching" + return str(self.value) + + def uses_opaque(self) -> bool: + return self != KVCacheStrategy.NAIVE + + +class KVCacheParams: + def __init__( + self, + dtype: DType, + n_kv_heads: int, + head_dim: int, + enable_prefix_caching: bool = False, + cache_strategy: KVCacheStrategy = KVCacheStrategy.CONTINUOUS, + page_size: Optional[int] = None, + n_devices: int = 1, + ): + # Initialize static attributes. + self.dtype = dtype + self.n_kv_heads = n_kv_heads + self.head_dim = head_dim + self.cache_strategy = cache_strategy + self.n_devices = n_devices + self.n_kv_heads_per_device = n_kv_heads // n_devices + self.page_size = page_size + self.enable_prefix_caching = enable_prefix_caching + + # Validate inputs. + if enable_prefix_caching and cache_strategy != KVCacheStrategy.PAGED: + raise ValueError( + "Prefix caching is only supported for paged cache strategy" + ) + if page_size is None and cache_strategy == KVCacheStrategy.PAGED: + raise ValueError("Page size is required for paged cache strategy") + + @property + def dtype_shorthand(self) -> str: + """The textual representation in shorthand of the dtype.""" + return "bf16" if self.dtype == DType.bfloat16 else "f32" + + @property + def static_cache_shape(self) -> tuple[str, str, str, str, str]: + return ( + "num_layers", + "batch_size", + "seq_len", + "n_kv_heads", + "head_dim", + ) diff --git a/src/max/pipelines/kv_cache/continuous_batching_cache.py b/src/max/pipelines/kv_cache/continuous_batching_cache.py new file mode 100644 index 0000000000..b6f75e9c8a --- /dev/null +++ b/src/max/pipelines/kv_cache/continuous_batching_cache.py @@ -0,0 +1,405 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Continuous Batching enabled KV cache for the Transformer leveraging the mo.opaque pattern.""" + +from __future__ import annotations + +from dataclasses import dataclass +from functools import reduce +from operator import mul +from typing import Any, List, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import ( + DeviceRef, + TensorType, + TensorValue, + _OpaqueType, + _OpaqueValue, + ops, +) + +from ._utils import build_max_lengths_tensor +from .cache_params import KVCacheParams +from .manager import ( + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + RaggedKVCacheInputs, +) + + +@dataclass +class ContinuousBatchingKVCacheInputSymbols(KVCacheInputSymbols): + kv_blocks: TensorType + cache_lengths: TensorType + lookup_table: TensorType + max_lengths: TensorType + + +class ContinuousBatchingKVCacheType(_OpaqueType): + """Continuous Mojo KV Cache graph type.""" + + def __init__(self) -> None: + """Creates an opaque type containing a continuous batching KV Cache.""" + super().__init__("ContinuousBatchingKVCache") + + +class ContinuousBatchingKVCacheCollectionType(_OpaqueType): + """The graph type for a "view" of the cache for the given sequences in the + batch. + + This object does not own the underlying buffers in k_cache and v_cache, + it's borrowing them from the BlockWrappers in our ContinuousKVCacheManager. + It does own the Pointer[NDBuffer[type, 3]] and valid_lengths buffer + """ + + def __init__(self) -> None: + """Creates an opaque type containing a continuous batching KV cache collection.""" + super().__init__("ContinuousBatchingKVCacheCollection") + + +class ContinuousBatchingKVCache(_OpaqueValue): + """Continuous Mojo KV cache graph value.""" + + +class ContinuousBatchingKVCacheCollection(_OpaqueValue): + """The graph value for a view of the KV cache.""" + + +class FetchContinuousBatchingKVCacheCollection: + def __init__(self, kv_params: KVCacheParams) -> None: + if kv_params.enable_prefix_caching: + raise ValueError( + "Prefix caching is not supported for continuous batching cache." + ) + self.kv_params = kv_params + + def __call__( + self, + blocks: TensorValue, # NDBuffer[type, 6, Self.blocks_shape] + cache_lengths: TensorValue, # NDBuffer[DType.uint32, 1], + lookup_table: TensorValue, # NDBuffer[DType.uint32, 1], + max_lengths: TensorValue, + ) -> ContinuousBatchingKVCacheCollection: + """Constructs a ContinuousBatchingKVCacheCollection for use downstream.""" + + # Explicit validation. + if blocks.dtype != self.kv_params.dtype: + msg = ( + f"expected blocks to be dtype: {self.kv_params.dtype}, got" + f" {blocks.dtype}" + ) + raise ValueError(msg) + + if blocks.rank != 6: + msg = f"expected blocks to be of rank 6, got {blocks.rank}" + raise ValueError(msg) + + # For all tensors other than the blocks tensor, the length should be equivalent + # to batch size, which is unknown within the graph at this stage. + if cache_lengths.dtype != DType.uint32: + msg = ( + "expected cache lengths to be dtype: uint32, got" + f" {cache_lengths.dtype}" + ) + raise ValueError(msg) + + if lookup_table.dtype != DType.uint32: + msg = ( + "expected lookup_table to be dtype: uint32, got" + f" {lookup_table.dtype}" + ) + raise ValueError(msg) + + return ContinuousBatchingKVCacheCollection( + ops.custom( + "mo.kv_collection_ctor.continuous_batching", + values=[ + blocks, + cache_lengths, + lookup_table, + max_lengths, + ], + out_types=[ContinuousBatchingKVCacheCollectionType()], + parameters={ + "num_heads": self.kv_params.n_kv_heads_per_device, + "head_dim": self.kv_params.head_dim, + }, + )[0].opaque + ) + + +class ContinuousBatchingKVCacheManager(KVCacheManager): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + ) -> None: + super().__init__( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + is_ragged=True, + ) + + # Allocate memory for the KV cache blocks. + self.blocks: List[Tensor] = [] + for i in range(len(self.devices)): + self.blocks.append( + Tensor.zeros( + self.block_shape(self.max_batch_size), + self.params.dtype, + device=self.devices[i], + ) + ) + + @classmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + cache_size = ( + reduce( + mul, + cls._block_shape( + params, max_batch_size, max_seq_len, num_layers + ), + ) + * params.dtype.size_in_bytes + ) + lengths_size = max_batch_size * DType.uint32.size_in_bytes + lookup_table_size = max_batch_size * DType.uint32.size_in_bytes + size = cache_size + lengths_size + lookup_table_size + return size * len(devices) + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + cache_size_per_sequence = ( + reduce( + mul, + cls._block_shape(params, 1, max_seq_len, num_layers), + ) + * params.dtype.size_in_bytes + ) + return int(available_cache_memory // cache_size_per_sequence) + + def _fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + """Fetches the KV cache state for the given sequence IDs. + + This method retrieves the current cache state for a batch of sequences, including their + cache lengths and lookup information. It's used during token generation to access + previously cached key/value pairs. + + Args: + seq_ids_and_prompts: Dictionary of sequence IDs to fetch cache state for and the + new prompt we plan to add to the cache. Each ID must be within + the max_batch_size and must exist in the current cache. + num_steps: Number of steps to run for multi-step scheduling. + + Returns: + List of tuples for each device containing: + - blocks: Tensor containing the KV cache blocks + - cache_lengths: Tensor of current cache lengths for each sequence + - lookup_table: Tensor mapping sequence IDs to cache positions + - max_lengths: Tensor containing [max_seq_length, max_cache_length] + + Raises: + ValueError: If any seq_id exceeds max_batch_size or doesn't exist in cache + """ + active_batch_size = len(seq_ids_and_prompts) + + # Lookup table and seq_ids are redundant identical tensors. + lookup_table_tensor = Tensor.from_numpy( + np.array(list(seq_ids_and_prompts.keys()), np.uint32) + ) + cache_lengths_np = np.zeros(active_batch_size, np.uint32) + + max_seq_length = 0 + max_cache_length = 0 + + for i, (seq_id, prompt) in enumerate(seq_ids_and_prompts.items()): + if seq_id > self.max_batch_size: + msg = ( + f"seq_id: {seq_id}, beyond max_batch_size, you may" + " want to increase `max_batch_size` in the pipeline" + " config." + ) + raise ValueError(msg) + elif seq_id not in self.cache_lengths: + raise ValueError(f"seq_id: {seq_id} not currently in cache.") + + cache_len = self.cache_lengths[seq_id] + + assert ( + cache_len + len(prompt) + num_steps - 1 <= self.max_seq_len + ), ( + f"seq_id: {seq_id} would overrun the max cache length of {self.max_seq_len} " + f"with {len(prompt)} new tokens and {num_steps} steps. Existing length: {cache_len}" + ) + + cache_lengths_np[i] = cache_len + + # Update the maximum lengths seen so far. + max_seq_length = max(max_seq_length, len(prompt)) + max_cache_length = max(max_cache_length, cache_len) + + cache_lengths = [ + Tensor.from_numpy(cache_lengths_np).to(d) for d in self.devices + ] + lookup_table_tensor_list = [ + lookup_table_tensor.to(self.devices[i]) + for i in range(len(self.devices)) + ] + + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_host = build_max_lengths_tensor( + num_steps, max_seq_length, max_cache_length + ) + + result = [ + RaggedKVCacheInputs( + blocks=self.blocks[i], + cache_lengths=cache_lengths[i], + lookup_table=lookup_table_tensor_list[i], + max_lengths=max_lengths_host, + ) + for i in range(len(self.devices)) + ] + return cast(List[KVCacheInputs], result) + + def block_shape(self, n_sequences: int) -> list[int]: + """Returns the shape of the KV cache blocks for the given number of sequences. + + Defines the 6-dimensional shape of the cache blocks used to store key and value + tensors for transformer attention. The dimensions represent: + [n_sequences, 2, num_layers, max_seq_len, n_kv_heads_per_device, head_dim] + where 2 represents separate storage for keys and values. + + Args: + n_sequences: Number of sequences that will be cached + + Returns: + List describing the shape of the cache blocks with dimensions for: + sequences, key/value split, layers, sequence length, attention heads, and head dimension + """ + return self._block_shape( + self.params, + n_sequences, + self.max_seq_len, + self.num_layers, + ) + + @staticmethod + def _block_shape( + params: KVCacheParams, + n_sequences: int, + max_seq_len: int, + num_layers: int, + ) -> list[int]: + return [ + n_sequences, + 2, + num_layers, + max_seq_len, + params.n_kv_heads_per_device, + params.head_dim, + ] + + def input_symbols( + self, + ) -> List[ContinuousBatchingKVCacheInputSymbols]: + """Returns the expected input tensor types for `fetch` on each device. + + Defines the tensor specifications needed by the cache implementation, + including shapes and data types. This is used for graph construction + and validation. + + Returns: + List of ContinuousBatchingKVCacheInputSymbols for each device + containing TensorTypes for: + - KV cache blocks: 6D tensor for storing keys and values + - Cache lengths: 1D tensor tracking sequence lengths + - Lookup table: 1D tensor mapping sequence IDs to cache positions + - Maximum lengths: 2D tensor tracking maximum sequence and cache lengths per step. + """ + return [ + ContinuousBatchingKVCacheInputSymbols( + kv_blocks=TensorType( + self.params.dtype, + shape=[ + "num_blocks", + 2, + "num_layers", + "max_seq_len", + "num_kv_heads", + "head_dim", + ], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + cache_lengths=TensorType( + DType.uint32, + shape=["batch_size"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + lookup_table=TensorType( + DType.uint32, + shape=["batch_size"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + # max_lengths (on host) + max_lengths=TensorType( + DType.uint32, + shape=["steps_remaining", 2], + # TODO: This is a hack introduced to remediate a negative side effect + # of the graph compiler changes introduced in #52793. + # We are tricking the compiler into thinking that the max_lengths + # tensor is on the device, even though it is on the host. + # With #52793 graph compiler changes, the compiler would + # insert erroneous device transfers that lead to CUDA_ILLEGAL_ADDRESS + # errors if we don't do this forceful device specification. + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + ) + for i in range(len(self.devices)) + ] diff --git a/src/max/pipelines/kv_cache/hf.py b/src/max/pipelines/kv_cache/hf.py new file mode 100644 index 0000000000..7f0a32622c --- /dev/null +++ b/src/max/pipelines/kv_cache/hf.py @@ -0,0 +1,149 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Optional, Union + +import numpy as np +import torch +from torch import device as torch_device +from transformers import PretrainedConfig, StaticCache + + +class ContinuousHFStaticCache(StaticCache): + def __init__( + self, + config: PretrainedConfig, + max_batch_size: int, + max_seq_len: int, + device: torch_device, + dtype: torch.dtype = torch.float32, + layer_device_map: Optional[ + dict[int, Union[str, torch_device, int]] + ] = None, + ) -> None: + super().__init__( + config, + max_batch_size, + max_seq_len, + device, + dtype, + None, + layer_device_map, + ) + self.max_batch_size = max_batch_size + self.device = device + self._init_slots() + + def _init_slots(self) -> None: + self.available_slots: set[int] = set(range(self.max_batch_size)) + self.active_slots: list[int] = [] + self.attention_patterns: dict[int, torch.Tensor] = {} + self.tokens: dict[int, np.ndarray] = {} + self.cache_position: torch.Tensor = torch.arange( + 0, + len(self.active_slots), + device=self.device, + ) + + def external_claim(self, seq_ids: list[int]) -> None: + if not self.available_slots: + raise RuntimeError("No slots are available for claiming.") + + unavailable_slots = set(seq_ids) - self.available_slots + if unavailable_slots: + raise ValueError( + f"The following seq_ids are already claimed: {unavailable_slots}" + ) + + for seq_id in seq_ids: + self.available_slots.remove(seq_id) + self.attention_patterns[seq_id] = torch.tensor( + [], dtype=torch.long, device=self.device + ) + self.tokens[seq_id] = np.array([]) + + def set_active_slots(self, seq_ids: list[int]) -> None: + self.active_slots = seq_ids + + def set_cache_position(self, cache_position: torch.Tensor): + self.cache_position = cache_position + + def update( + self, + key_states: torch.Tensor, + value_states: torch.Tensor, + layer_idx: int, + cache_kwargs: Optional[dict[str, Any]] = None, + ) -> tuple[torch.Tensor, torch.Tensor]: + cache_position = self.cache_position + + k_out = self.key_cache[layer_idx] + v_out = self.value_cache[layer_idx] + + # Prepare slot indices tensor once + slot_indices = torch.tensor(self.active_slots, device=self.device) + + # Update each sequence individually to handle different shapes correctly + for batch_idx, slot_idx in enumerate(self.active_slots): + k_out[slot_idx].index_copy_( + 1, cache_position, key_states[batch_idx] + ) + v_out[slot_idx].index_copy_( + 1, cache_position, value_states[batch_idx] + ) + + # Return reordered key value cache for the layer + return ( + k_out.index_select(0, slot_indices), + v_out.index_select(0, slot_indices), + ) + + def update_attention_pattern( + self, seq_id: int, attention_mask: torch.Tensor + ) -> None: + self.attention_patterns[seq_id] = attention_mask.to( + device=self.device, dtype=torch.long + ) + + def get_attention_mask(self, seq_ids: list[int]) -> torch.Tensor: + max_len = max( + self.attention_patterns[seq_id].size(0) for seq_id in seq_ids + ) + attention_mask = torch.zeros( + (len(seq_ids), max_len), dtype=torch.long, device=self.device + ) + + for i, seq_id in enumerate(seq_ids): + pattern = self.attention_patterns[seq_id] + attention_mask[i, : pattern.size(0)] = pattern + + return attention_mask + + def release(self, seq_id: int) -> None: + if seq_id in self.available_slots: + raise KeyError( + f"The seq_id {seq_id} is not currently claimed and cannot be released." + ) + + # Zero out cache tensors for the sequence + for layer_idx in range(len(self.key_cache)): + self.key_cache[layer_idx][seq_id].zero_() + self.value_cache[layer_idx][seq_id].zero_() + + self.available_slots.add(seq_id) + del self.attention_patterns[seq_id] + del self.tokens[seq_id] + + def reset(self) -> None: + super().reset() + self._init_slots() diff --git a/src/max/pipelines/kv_cache/manager.py b/src/max/pipelines/kv_cache/manager.py new file mode 100644 index 0000000000..1e1ad0040b --- /dev/null +++ b/src/max/pipelines/kv_cache/manager.py @@ -0,0 +1,535 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Abstract base class for KVCacheManager for KV Cache.""" + +from __future__ import annotations + +from abc import ABC, abstractmethod +from dataclasses import dataclass +from typing import ( + Any, + Iterator, + List, + Sequence, + Type, + TypeVar, + cast, + final, + overload, +) + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import DeviceRef, Graph, TensorType, TensorValue +from typing_extensions import TypeGuard + +from .cache_params import KVCacheParams + + +@dataclass +class _FetchMetadata: + """Metadata about sequences that are inflight. + + Inflight refers to sequences that have executed `fetch` but not `step`. + """ + + prompt: np.ndarray + num_steps: int + + +_T = TypeVar("_T") + + +def _is_sequence_of(x: Any, ty: Type[_T]) -> TypeGuard[Sequence[_T]]: + return isinstance(x, Sequence) and all(isinstance(item, ty) for item in x) + + +@dataclass +class KVCacheInputs: + """ + A base class that holds KV cache related (Tensor) inputs. + + It is meant to be subclassed by concrete KV cache input types. + + Example: + >>> @dataclass + ... class RaggedKVCacheInputs(KVCacheInputs): + ... blocks: Tensor + ... cache_lengths: Tensor + ... lookup_table: Tensor + ... max_lengths: Tensor + """ + + def __iter__(self) -> Iterator[Tensor]: + """Iterates through each Type in order.""" + for field in self.__dataclass_fields__: + value = getattr(self, field) + if isinstance(value, KVCacheInputs): + yield from value + elif _is_sequence_of(value, KVCacheInputs): + for item in value: + yield from item + else: + yield cast(Tensor, value) + + @overload + def __getitem__(self, index: int) -> Tensor: ... + + @overload + def __getitem__(self, index: slice) -> Sequence[Tensor]: ... + + def __getitem__(self, index: Any) -> Any: + return list(self)[index] + + def __len__(self) -> int: + count = 0 + # Iterate over all fields in the dataclass. If we run into a sequence of + # KVCacheInputs, we expand and recursively call `len` on the KVCacheInputs + # elements. + for field in self.__dataclass_fields__: + value = getattr(self, field) + if _is_sequence_of(value, KVCacheInputs): + count += sum(len(x) for x in value) + else: + count += 1 + return count + + +@dataclass +class PaddedKVCacheInputs(KVCacheInputs): + """ + PaddedKVCacheInputs is a class that holds the inputs for + KV cache when used together with padded tensors. + """ + + k_cache: Tensor + v_cache: Tensor + start_pos: Tensor + null_op: Tensor + + +@dataclass +class RaggedKVCacheInputs(KVCacheInputs): + """ + RaggedKVCacheInputs is a class that holds the inputs for + KV cache when used together with ragged tensors. + """ + + blocks: Tensor + cache_lengths: Tensor + lookup_table: Tensor + max_lengths: Tensor + + +@dataclass +class KVCacheInputsSequence(KVCacheInputs): + """ + KVCacheInputsSequence is a sequence of KVCacheInputs. + It is primarily used in our multistep execution to represent batched + KVCacheInputs. + """ + + kv_cache_inputs: Sequence[KVCacheInputs] + + +@dataclass +class KVCacheInputSymbols: + """ + Base class for input symbols for KV cache managers. + + The derived class is responsible for defining the input symbols for the + specific KV cache manager. + + For example, here's a derived class for a text KV cache manager: + >>> @dataclass + ... class ContinuousBatchingKVCacheInputSymbols(KVCacheInputSymbols): + ... kv_blocks: TensorType + ... cache_lengths: TensorType + ... lookup_table: TensorType + ... max_lengths: TensorType + """ + + def __iter__(self) -> Iterator[Any]: + """Iterates through each Type in order.""" + for field in self.__dataclass_fields__: + value = getattr(self, field) + if isinstance(value, KVCacheInputSymbols): + yield from value + else: + yield value + + def __getitem__(self, index) -> Any: + return list(self)[index] + + +class KVCacheManager(ABC): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + is_ragged: bool = False, + ) -> None: + self.params = params + self.max_batch_size = max_batch_size + self.max_seq_len = max_seq_len + self.num_layers = num_layers + self.devices = devices + self.session = session + + # Attributes for managing available slots. + self.available = set(range(self.max_batch_size)) + self.cache_lengths: dict[int, int] = {} + + self.is_ragged = is_ragged + increment_cache_lengths_graph = ( + self._create_increment_cache_lengths_graph() + ) + self.increment_cache_lengths_model = session.load( + increment_cache_lengths_graph + ) + self.fetch_metadata: dict[int, _FetchMetadata] = {} + + @classmethod + @abstractmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated total memory usage of the kv cache.""" + ... + + @classmethod + @abstractmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + """Returns the estimated optimal batch size for the kv cache.""" + ... + + @abstractmethod + def _fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + """Used by `fetch` and should be implemented by child classes.""" + ... + + @final + def fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + """Returns blocks and other inputs to kv cache kernel for given + sequence ids and prompts.""" + # Call into `_fetch` method implemented by child classes. + # This may trim the prompts in place so the fetch metadata is updated + # afterwards. + res = self._fetch(seq_ids_and_prompts, num_steps) + + # Update the fetch metadata for the given sequence ids and prompts. + for seq_id, prompt in seq_ids_and_prompts.items(): + assert seq_id not in self.fetch_metadata + self.fetch_metadata[seq_id] = _FetchMetadata( + prompt=prompt, + num_steps=num_steps, + ) + + return res + + @abstractmethod + def input_symbols( + self, + ) -> Sequence[KVCacheInputSymbols]: + """Returns the input symbols for the kv cache manager.""" + ... + + def claim(self, n: int) -> List[int]: + """Claims `n` blocks of memory in the cache for incoming requests. + + This returns a list of sequence ids, which identify a sequence's + location within the cache. This sequence id can then be passed + in the fetch function to return the ContinuousBatchingKVCacheCollection + for those sequences. + """ + # TODO we should remove this interface and just use external_claim. + seq_ids = [] + + for _ in range(n): + id = self.available.pop() + seq_ids.append(id) + self.cache_lengths[id] = 0 + + return seq_ids + + def external_claim(self, seq_ids: List[int]) -> None: + """Variant of the above where sequence ids are reserved externally.""" + for seq_id in seq_ids: + self.available.remove(seq_id) + self.cache_lengths[seq_id] = 0 + + def _step( + self, + seq_ids_and_new_tokens: dict[int, np.ndarray], + ) -> None: + """Used by `step` and can optionally be overridden by child classes.""" + ... + + def step(self, seq_ids_and_new_tokens: dict[int, np.ndarray]) -> None: + """Update the `cache_lengths` objects to note that a new + kv projection step has occurred, and that the underlying memory + has been written to. This `cache_lengths` value is then used + downstream in `fetch` to track what section of memory should + be used in the kernels. + """ + # Call into `_step` method possibly overridden by child classes. + self._step(seq_ids_and_new_tokens) + + # Update the cache lengths and delete the fetch metadata for the given + # sequence ids and prompts. + for seq_id, new_tokens in seq_ids_and_new_tokens.items(): + if seq_id not in self.cache_lengths: + raise ValueError(f"seq_id: {seq_id} not in cache.") + + assert seq_id in self.fetch_metadata + metadata = self.fetch_metadata[seq_id] + del self.fetch_metadata[seq_id] + + assert metadata.num_steps == len(new_tokens) + self.cache_lengths[seq_id] += ( + len(metadata.prompt) + metadata.num_steps - 1 + ) + + def release(self, seq_id: int) -> None: + """Release `seq_id` provided, marking this sequence as complete. + This returns the seq_id back to the available pool of cache memory, + allowing it to be reused when a new sequence is claimed. + """ + + if seq_id not in self.cache_lengths: + raise ValueError(f"seq_id: {id} not in cache.") + + self.available.add(seq_id) + del self.cache_lengths[seq_id] + + def contains(self, seq_id: int) -> bool: + return seq_id not in self.slots_remaining + + @property + def slots_remaining(self) -> set[int]: + """The outstanding cache slots available.""" + return self.available + + @property + def max_sequence_length(self) -> int: + """The maximum sequence length in current cache.""" + return max(self.cache_lengths.values()) + + def num_kv_inputs(self) -> int: + """Returns the default number of KV cache inputs for KV managers. + + Subclasses with a different number of KV cache inputs should override + this method and `increment_cache_lengths`. + """ + return 4 + + def increment_cache_lengths( + self, + kv_cache_inputs: List[RaggedKVCacheInputs] | List[PaddedKVCacheInputs], + prev_model_inputs: Any, + ) -> List[RaggedKVCacheInputs] | List[PaddedKVCacheInputs]: + """ + Prepare the inputs for a multistep execution, generally by incrementing + the cache lengths. This should not require a device synchronization, + as this would defeat the purpose of multistep execution. + + This should also not update the cache lengths in our manager, this batch is + still considered in-progress. + """ + if self.is_ragged: + return self._increment_cache_lengths_ragged( + kv_cache_inputs=cast( + list[RaggedKVCacheInputs], kv_cache_inputs + ), + prev_model_inputs=prev_model_inputs, + ) + + return self._increment_cache_lengths_padded( + kv_cache_inputs=cast(list[PaddedKVCacheInputs], kv_cache_inputs), + prev_model_inputs=prev_model_inputs, + ) + + def _increment_cache_lengths_ragged( + self, + kv_cache_inputs: List[RaggedKVCacheInputs], + prev_model_inputs: Any, + ) -> List[RaggedKVCacheInputs]: + """Prepares cache inputs for the next token in multistep execution. + + Updates the cache lengths for the next inference step without requiring device + synchronization or memory copies. This is crucial for maintaining performance + during multi-token generation. + + Args: + kv_cache_inputs: Current cache state tuples (blocks, lengths, lookup, max_lengths) + prev_model_inputs: Previous model inputs including row offsets + + Returns: + Updated cache input tuples with incremented lengths. + """ + blocks = [kv_cache_inputs[i].blocks for i in range(len(self.devices))] + cache_lengths = [ + kv_cache_inputs[i].cache_lengths for i in range(len(self.devices)) + ] + lookup_table = [ + kv_cache_inputs[i].lookup_table for i in range(len(self.devices)) + ] + + # max_lengths is host allocated and the same across all devices. + max_lengths = kv_cache_inputs[0].max_lengths + + # Update the cache_lengths of our batch by the previous sequence length. + updated_cache_lengths = self.increment_cache_lengths_model.execute( + prev_model_inputs.input_row_offsets, *cache_lengths + ) + + # Advance to the next step of the max_lengths tensor. + updated_max_lengths = max_lengths[1:, :] + + # Return our updated batch. + for i in range(len(self.devices)): + updated_cache_length = updated_cache_lengths[i] + assert isinstance(updated_cache_length, Tensor) + kv_cache_inputs[i] = RaggedKVCacheInputs( + blocks=blocks[i], + cache_lengths=updated_cache_length, + lookup_table=lookup_table[i], + max_lengths=updated_max_lengths, + ) + return kv_cache_inputs + + def _increment_cache_lengths_padded( + self, + kv_cache_inputs: List[PaddedKVCacheInputs], + prev_model_inputs: Any, + ) -> List[PaddedKVCacheInputs]: + """ + Prepare the inputs for a multistep execution, generally by incrementing + the cache lengths. This should not require a device synchronization, + as this would defeat the purpose of multistep execution. + + This should also not update the cache lengths in our manager, this batch is + still considered in-progress. + """ + assert len(kv_cache_inputs) == 1 + curr_kv_cache_inputs = kv_cache_inputs[0] + + new_start_pos = self.increment_cache_lengths_model( + curr_kv_cache_inputs.start_pos, prev_model_inputs.tokens + )[0] + assert isinstance(new_start_pos, Tensor) + return [ + PaddedKVCacheInputs( + k_cache=curr_kv_cache_inputs.k_cache, + v_cache=curr_kv_cache_inputs.v_cache, + start_pos=new_start_pos, + null_op=new_start_pos, + ) + ] + + def _create_increment_cache_lengths_graph(self) -> Graph: + """Constructs a graph to increment the cache_lengths argument during multi-step inference. + + It's imperative that this operation occurs entirely on GPU, + otherwise we'll synchronize across devices and incur a latency penalty. + """ + if self.is_ragged: + return self._create_ragged_increment_cache_lengths_graph() + + return self._create_padded_increment_cache_lengths_graph() + + def _create_padded_increment_cache_lengths_graph(self) -> Graph: + start_pos_type = TensorType(DType.int64, shape=[]) + tokens_type = TensorType(DType.int64, shape=["batch_size", "seq_len"]) + with Graph( + "update_start_pos", input_types=[start_pos_type, tokens_type] + ) as graph: + start_pos, tokens = graph.inputs + assert isinstance(start_pos, TensorValue) + assert isinstance(tokens, TensorValue) + graph.output(start_pos + tokens.shape[1]) + + return graph + + def _create_ragged_increment_cache_lengths_graph(self) -> Graph: + input_symbols = self.input_symbols() + cache_lengths_types = [ + input_symbols[i][1] for i in range(len(self.devices)) + ] + + input_row_offsets_type = TensorType( + DType.uint32, + shape=["input_row_offsets_len"], + device=DeviceRef(self.devices[0].label, self.devices[0].id), + ) + + with Graph( + "update_cache_lengths", + input_types=[input_row_offsets_type, *cache_lengths_types], + ) as graph: + inp_row_offset, *cache_lengths = graph.inputs + assert isinstance(inp_row_offset, TensorValue) + # broadcast the inp_row_offset to all devices (naive) + # get rid of this if statement after #51465 merges + if len(self.devices) > 1: + input_row_offsets = [ + inp_row_offset.to(DeviceRef(d.label, d.id)) + for d in self.devices + ] + else: + input_row_offsets = [inp_row_offset] + outputs = [] + for i in range(len(self.devices)): + cache_length = cache_lengths[i] + assert isinstance(cache_length, TensorValue) + right_slice = input_row_offsets[i][1:].rebind( + cache_length.shape + ) + left_slice = input_row_offsets[i][ + : input_row_offsets[i].shape[0] - 1 + ].rebind(cache_length.shape) + increment_amount = right_slice - left_slice + outputs.append(cache_length + increment_amount) + graph.output(*outputs) + + return graph diff --git a/src/max/pipelines/kv_cache/naive_cache.py b/src/max/pipelines/kv_cache/naive_cache.py new file mode 100644 index 0000000000..40ad2d9b5e --- /dev/null +++ b/src/max/pipelines/kv_cache/naive_cache.py @@ -0,0 +1,216 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Naive KV cache for the Transformer.""" + +from dataclasses import dataclass +from functools import reduce +from operator import mul +from typing import Any, List, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import BufferType, TensorType + +from .cache_params import KVCacheParams +from .manager import ( + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + PaddedKVCacheInputs, +) + + +@dataclass +class NaiveKVCacheInputSymbols(KVCacheInputSymbols): + k_cache: BufferType + v_cache: BufferType + start_pos: TensorType + null_op: TensorType + + +class NaiveKVCacheManager(KVCacheManager): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: List[Device], + session: InferenceSession, + ) -> None: + assert len(devices) == 1, "Naive caching only supports a single device." + assert params.n_devices == 1, ( + "Naive caching only supports a single device." + ) + if params.enable_prefix_caching: + raise ValueError("Prefix caching is not supported for naive cache.") + super().__init__( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + is_ragged=False, + ) + + self.keys = Tensor.zeros( + shape=self.cache_shape, + dtype=self.params.dtype, + device=self.devices[0], + ) + + self.values = Tensor.zeros( + shape=self.cache_shape, + dtype=self.params.dtype, + device=self.devices[0], + ) + + @classmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + return ( + reduce( + mul, + cls._cache_shape( + params, max_batch_size, max_seq_len, num_layers + ), + ) + * params.dtype.size_in_bytes + * 2 + ) + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: List[Device], + **kwargs: Any, + ) -> int: + cache_size_per_sequence = ( + reduce( + mul, + cls._cache_shape(params, 1, max_seq_len, num_layers), + ) + * params.dtype.size_in_bytes + * 2 + ) + return int(available_cache_memory // cache_size_per_sequence) + + @property + def cache_shape(self) -> list[int]: + return self._cache_shape( + self.params, + self.max_batch_size, + self.max_seq_len, + self.num_layers, + ) + + @staticmethod + def _cache_shape( + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + ): + return [ + max_seq_len, + num_layers, + max_batch_size, + params.n_kv_heads, + params.head_dim, + ] + + def _fetch( + self, + seq_ids_and_prompts: dict[int, np.ndarray], + num_steps: int = 1, + ) -> List[KVCacheInputs]: + existing_keys = list(self.cache_lengths.keys()) + for i, (seq_id, prompt) in enumerate(seq_ids_and_prompts.items()): + if existing_keys[i] != seq_id: + msg = ( + "seq_ids passed, are different than current inflight" + " batch.Naive Caching currently does not support mutating" + " inflight batches." + ) + raise ValueError(msg) + + total_length = ( + self.cache_lengths[seq_id] + len(prompt) + num_steps - 1 + ) + assert total_length <= self.max_seq_len, ( + f"seq_id: {seq_id} would overrun the max cache length of {self.max_seq_len} " + f"with {len(prompt)} new tokens and {num_steps} steps. Existing length: {self.cache_lengths[seq_id]}" + ) + padded_kv_cache_inputs = [ + PaddedKVCacheInputs( + k_cache=self.keys, + v_cache=self.values, + start_pos=Tensor.scalar( + self.max_sequence_length, DType.int64, self.devices[0] + ), + # TODO: MSDK-1201 - This next variable is not used upstream. + # It is included here, as a placeholder, until we can dynamically + # return a number of tensors from both `fetch` and `input_symbols`. + null_op=Tensor.scalar( + self.max_sequence_length, DType.int64, self.devices[0] + ), + ) + ] + return cast(List[KVCacheInputs], padded_kv_cache_inputs) + + def input_symbols( + self, + ) -> List[NaiveKVCacheInputSymbols]: + return [ + NaiveKVCacheInputSymbols( + k_cache=BufferType( + self.params.dtype, + shape=[ + "max_seq_len", + self.num_layers, + "max_batch_size", + self.params.n_kv_heads, + self.params.head_dim, + ], + ), + v_cache=BufferType( + self.params.dtype, + shape=[ + "max_seq_len", + self.num_layers, + "max_batch_size", + self.params.n_kv_heads, + self.params.head_dim, + ], + ), + start_pos=TensorType(DType.int64, shape=[]), + # null_op - this isnt used for the naive cache + null_op=TensorType(DType.int64, shape=[]), + ) + ] diff --git a/src/max/pipelines/kv_cache/paged_cache.py b/src/max/pipelines/kv_cache/paged_cache.py new file mode 100644 index 0000000000..cc36c1bf3d --- /dev/null +++ b/src/max/pipelines/kv_cache/paged_cache.py @@ -0,0 +1,778 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""PagedAttention-enabled KV cache for the Transformer leveraging the mo.opaque pattern.""" + +from __future__ import annotations + +import logging +import math +from dataclasses import dataclass +from functools import reduce +from operator import mul +from typing import Any, Dict, List, Optional, cast + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import ( + DeviceRef, + TensorType, + TensorValue, + _OpaqueType, + _OpaqueValue, + ops, +) +from max.support.human_readable_formatter import to_human_readable_bytes + +from ._utils import build_max_lengths_tensor +from .cache_params import KVCacheParams +from .manager import ( + KVCacheInputs, + KVCacheInputSymbols, + KVCacheManager, + RaggedKVCacheInputs, +) +from .paged_cache_metadata import PagedCacheMetadata, ceildiv +from .prefix_cache import PrefixCache + +logger = logging.getLogger("max.pipelines") + +PERCENTAGE_BLOCKS_TO_EVICT = 0.05 + + +@dataclass +class PagedCacheInputSymbols(KVCacheInputSymbols): + kv_blocks: TensorType + cache_lengths: TensorType + lookup_table: TensorType + max_lengths: TensorType + + +class PagedKVCacheType(_OpaqueType): + """PagedAttention Mojo KV Cache graph type.""" + + def __init__(self) -> None: + """Creates an opaque type containing a paged KV Cache.""" + super().__init__("PagedKVCache") + + +class PagedKVCacheCollectionType(_OpaqueType): + """The graph type for a "view" of the cache for the given sequences in the + batch. + + This object does not own the underlying buffers in k_cache and v_cache, + it's borrowing them from the BlockWrappers in our ContinuousKVCacheManager. + It does own the Pointer[NDBuffer[type, 3]] and valid_lengths buffer + """ + + def __init__(self) -> None: + """Creates an opaque type containing a paged KV cache collection.""" + super().__init__("PagedKVCacheCollection") + + +class PagedKVCache(_OpaqueValue): + """PagedAttention Mojo KV cache graph value.""" + + +class PagedKVCacheCollection(_OpaqueValue): + """The graph value for a view of the KV cache.""" + + +class FetchPagedKVCacheCollection: + def __init__(self, kv_params: KVCacheParams) -> None: + self.kv_params = kv_params + + def __call__( + self, + blocks: TensorValue, # NDBuffer[type, 6, Self.blocks_shape] + cache_lengths: TensorValue, # NDBuffer[DType.uint32, 1], + lookup_table: TensorValue, # NDBuffer[DType.uint32, 2], + is_cache_empty: TensorValue, + ) -> PagedKVCacheCollection: + """Constructs a PagedKVCacheCollection for use downstream.""" + + # Explicit validation. + if blocks.dtype != self.kv_params.dtype: + msg = ( + f"expected blocks to be dtype: {self.kv_params.dtype}, got" + f" {blocks.dtype}" + ) + raise ValueError(msg) + + if blocks.rank != 6: + msg = f"expected blocks to be of rank 6, got {blocks.rank}" + raise ValueError(msg) + + # For all tensors other than the blocks tensor, the length should be equivalent + # to batch size, which is unknown within the graph at this stage. + if cache_lengths.dtype != DType.uint32: + msg = f"expected cache lengths to be dtype: uint32, got {cache_lengths.dtype}" + raise ValueError(msg) + + if cache_lengths.rank != 1: + msg = f"expected cache lengths to be of rank 1, got {cache_lengths.rank}" + raise ValueError(msg) + + if lookup_table.dtype != DType.uint32: + msg = f"expected lookup_table to be dtype: uint32, got {lookup_table.dtype}" + raise ValueError(msg) + + if lookup_table.rank != 2: + msg = f"expected lookup_table to be of rank 2, got {lookup_table.rank}" + raise ValueError(msg) + + return PagedKVCacheCollection( + ops.custom( + "mo.kv_collection_ctor.paged", + values=[blocks, cache_lengths, lookup_table, is_cache_empty], + out_types=[PagedKVCacheCollectionType()], + parameters={ + "num_heads": self.kv_params.n_kv_heads_per_device, + "head_dim": self.kv_params.head_dim, + "page_size": int(blocks.shape[3]), + }, + )[0].opaque + ) + + +class PagedKVCacheManager(KVCacheManager): + def __init__( + self, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + devices: list[Device], + session: InferenceSession, + cache_memory: int, + page_size: int = 128, + enable_runtime_checks: bool = False, + ): + """ + Args: + params: The KVCacheParams for the given pipeline. + max_batch_size: The maximum number of active + requests that the manager should support. + max_seq_len: The maximum sequence length we will generate. + num_layers: The number of layers in the model. + devices: The devices on which the manager will allocate memory. + session: The inference session to load ops from. + cache_memory: The total amount of memory available for caching. + This is aggregated across all devices. + page_size: The number of tokens that will be stored in a single page. + enable_runtime_checks: Whether to enable runtime correctness checks. + """ + # The number of tokens in a single page. + self.page_size = page_size + + # The number of bytes that a single page will occupy. + single_page_size_bytes = ( + 2 + * num_layers + * params.n_kv_heads_per_device + * params.head_dim + * page_size + * params.dtype.size_in_bytes + ) + + # Normalize cache_memory across all devices. + cache_memory_per_device = cache_memory // len(devices) + + # The total number of pages we'll have per-device. + self.total_num_pages = int( + cache_memory_per_device // single_page_size_bytes + ) + + single_page_size_bytes_str = to_human_readable_bytes( + single_page_size_bytes + ) + cache_memory_per_device_str = to_human_readable_bytes( + cache_memory_per_device + ) + if self.total_num_pages == 0: + raise RuntimeError( + f"Insufficient cache memory to allocate even a single page.\n" + f"One page requires {single_page_size_bytes_str} but only {cache_memory_per_device_str} are available." + ) + + if max_batch_size > self.total_num_pages: + logger.warning( + f"Insufficient cache memory to support a batch containing {max_batch_size} requests with one token per request. " + f"Need to allocate at least {max_batch_size} blocks, but only have enough memory for {self.total_num_pages} blocks. " + f"One page requires {single_page_size_bytes_str} but only {cache_memory_per_device_str} are available." + ) + + blocks_needed_for_max_seq_len = ceildiv(max_seq_len, page_size) + if blocks_needed_for_max_seq_len > self.total_num_pages: + logger.warning( + f"Insufficient cache memory to support a batch containing one request at the max sequence length of {max_seq_len} tokens. " + f"Need to allocate at least {blocks_needed_for_max_seq_len} blocks, but only have enough memory for {self.total_num_pages} blocks. " + f"One page requires {single_page_size_bytes} but only {cache_memory_per_device} are available." + ) + + # call our base class constructor + super().__init__( + params=params, + max_batch_size=max_batch_size, + max_seq_len=max_seq_len, + num_layers=num_layers, + devices=devices, + session=session, + is_ragged=True, + ) + + # Initialize the set of available blocks. + self.available_blocks = set(range(self.total_num_pages)) + + # Initialize the blocks for each device. + self.blocks: list[Tensor] = [] + for device in self.devices: + self.blocks.append( + Tensor.zeros( + self.block_shape(), # type: ignore + self.params.dtype, + device=device, + ) + ) + + self.active_requests: Dict[int, PagedCacheMetadata] = {} + + self.prefix_cache: Optional[PrefixCache] = None + if params.enable_prefix_caching: + self.prefix_cache = PrefixCache( + session=session, + page_size=self.page_size, + block_shape=self.block_shape(is_parameterized=True), + dtype=self.params.dtype, + devices=devices, + tensors=self.blocks, + ) + + # Preallocate a PagedCacheMetadata to use for sequences not in the cache. + # This is to reduce the number of allocations. This is NOT thread safe. + self.tmp_data = PagedCacheMetadata(self.page_size, self.max_seq_len) + + # Whether to enable runtime correctness checks. These correctness checks + # are expensive and should only be used in tests. + self.enable_runtime_checks = enable_runtime_checks + + def _runtime_check(self) -> None: + if not self.enable_runtime_checks: + return + assert self._count_all_pages() == self.total_num_pages + if self.prefix_cache is None: + return + for seq_id, data in self.active_requests.items(): + self.prefix_cache.validate_req_state_valid( + seq_id, + data.committed_tokens, + data.committed_blocks, + ) + + @property + def cache_hit_rate(self) -> float: + if self.prefix_cache is None: + return 0.0 + return self.prefix_cache.cache_hit_rate + + def alloc_block(self) -> int: + if len(self.available_blocks) == 0 and self.prefix_cache is not None: + blocks_to_evict = self.total_num_pages * PERCENTAGE_BLOCKS_TO_EVICT + blocks_to_evict = int(max(1, blocks_to_evict)) + evicted = self.prefix_cache.evict_blocks(blocks_to_evict) + for block in evicted: + self.available_blocks.add(block) + + if len(self.available_blocks) == 0: + raise RuntimeError( + f"All {self.total_num_pages} KVCache pages have been exhausted! " + "You must restart your process and set a smaller batch size or max seq len." + ) + + block = self.available_blocks.pop() + return block + + def release_block(self, block: int) -> None: + """We can release a block if prefix caching is disabled or if it is not committed. + + If it is committed, it may be in the radix tree and in use by other sequences. + This means it can't be safely released without further checks. + """ + if self.prefix_cache is None: + self.available_blocks.add(block) + return + + # We can only add the block to the available set if it is not committed + # to the prefix cache. + if block not in self.prefix_cache: + self.available_blocks.add(block) + + @classmethod + def _block_size_per_token( + cls, params: KVCacheParams, num_layers: int + ) -> int: + return ( + reduce(mul, cls._block_shape(params, 1, 1, num_layers), 1) + * params.dtype.size_in_bytes + ) + + @classmethod + def estimated_memory_size( + cls, + params: KVCacheParams, + max_batch_size: int, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + # Determine how much size is necessary to store the full cache based on max_batch_size and max_seq_len. + # If that's less than available_cache_memory, return that. + # Otherwise, return available_cache_memory. + # This is to prevent over-allocation on devices with a large amount of free memory (e.g. CPUs). + assert params.page_size is not None + block_size_per_token = cls._block_size_per_token( + params, num_layers + ) * len(devices) + + # round up our max_seq_len to the nearest page_size + max_seq_len_round_up = ( + math.ceil(max_seq_len / params.page_size) * params.page_size + ) + size_to_support_full_cache = ( + block_size_per_token * max_batch_size * max_seq_len_round_up + ) + + # return the minimum of the two + return min(available_cache_memory, size_to_support_full_cache) + + @classmethod + def infer_optimal_batch_size( + cls, + params: KVCacheParams, + max_seq_len: int, + num_layers: int, + available_cache_memory: int, + devices: list[Device], + **kwargs: Any, + ) -> int: + # We just hard-code a default of 512 for paged attention. + # The worst case scenario if this is too high is that we'll evict + # requests at an elevated rate. We print warnings in that case so users + # are aware of what needs to be tweaked/changed. + return 512 + + def block_shape( + self, + is_parameterized: bool = False, + ) -> list[int | str]: + return self._block_shape( + self.params, + self.total_num_pages, + self.page_size, + self.num_layers, + is_parameterized, + ) + + @classmethod + def _block_shape( + cls, + params: KVCacheParams, + total_num_pages: int, + page_size: int, + num_layers: int, + is_parameterized: bool = False, + ) -> list[int | str]: + # split k and v caches across a single dim + # 0 = key + # 1 = value + kv_dim = 2 + return [ + num_layers, + kv_dim, + "total_num_pages" if is_parameterized else total_num_pages, + page_size, + params.n_kv_heads_per_device, + params.head_dim, + ] + + def get_num_free_blocks(self) -> int: + if self.prefix_cache is None: + return len(self.available_blocks) + return len(self.available_blocks) + len(self.prefix_cache.stale_blocks) + + def get_num_used_blocks(self) -> int: + return self.total_num_pages - self.get_num_free_blocks() + + def can_fetch( + self, seq_ids_and_prompts: dict[int, np.ndarray], num_steps: int = 1 + ) -> bool: + """Checks if there are sufficient KV pages to run `fetch` on given batch. + + Sequences which have not been previously added to the cache can be handled + by this method. We assume the cache lengths are zero in those cases. + """ + + tot_new_pages_needed = 0 + all_cache_hit_blocks: set[int] = set() + + for seq_id, prompt in seq_ids_and_prompts.items(): + prefix_blocks, _, new_pages_needed = self.query_fetch_stats( + seq_id, prompt, num_steps + ) + tot_new_pages_needed += new_pages_needed + all_cache_hit_blocks.update(prefix_blocks) + + num_stale_blocks = 0 + if self.prefix_cache is not None: + # the blocks in the prefix cache that will be used by sequences in + # this batch are no longer eligible for eviction / allocation. + num_stale_blocks = len( + self.prefix_cache.stale_blocks - all_cache_hit_blocks + ) + + num_free_blocks = len(self.available_blocks) + num_stale_blocks + + return tot_new_pages_needed <= num_free_blocks + + def query_fetch_stats( + self, seq_id: int, prompt: np.ndarray, num_steps: int = 1 + ) -> tuple[set[int], int, int]: + """Query about the stats about running the fetch operation for a given + sequence. It is OK if some seq_id are not in the cache. + + This method does not modify the state of the paged cache. + + Returns: + - prefix_blocks: Prefix cache blocks that would be reused for this seq. + - tokens_to_encode: Number of tokens in prompt we need to encode when running the fetch. + - new_pages_needed: Number of new pages we need to allocate when running the fetch. + """ + reusing_tmp_data = False + if seq_id in self.active_requests: + data = self.active_requests[seq_id] + else: + reusing_tmp_data = True + data = self.tmp_data + + data.fetch(prompt, num_steps) + prefix_blocks: set[int] = set() + cache_hit_tokens = 0 + if self.prefix_cache is not None: + # copy on write does not impact the number of new blocks needed + prefix_blocks, cache_hit_tokens = ( + self.prefix_cache.query_fetch_stats(seq_id, data) + ) + assert cache_hit_tokens >= 0 + + tokens_to_encode = len(data.prompt_tokens) - cache_hit_tokens + assert tokens_to_encode >= 1 + # recall that if we have any full cache hits, we will need to release our + # partial block as it is replaced with a full block + num_existing_pages = len(data.blocks) + num_existing_pages += len(prefix_blocks) + total_pages_needed = ceildiv(data.seq_len, self.page_size) + new_pages_needed = total_pages_needed - num_existing_pages + assert new_pages_needed >= 0 + + # reverse the fetch operation so that this method does not mutate state + data.undo_fetch(prompt, num_steps) + + if reusing_tmp_data: + self.tmp_data.clear() + + return prefix_blocks, tokens_to_encode, new_pages_needed + + def _fetch( + self, seq_ids_and_prompts: dict[int, np.ndarray], num_steps: int = 1 + ) -> List[KVCacheInputs]: + """This method identifies available blocks to service the given requests and marks them as inflight. + They're assigned to the request as "in-flight" until step is called. + + Generally the prompt length is n for prefill, and 1 for decode step. Additionally, there is not a + kv entry associated with each token in the prompt. + + When prefix caching is enabled, and KV entries can be retrieved for some tokens in the prompt, the + input `seq_ids_and_prompts` will be modified. Each prompt will be shortened to only include the tokens + for which we do not have a cached KV entry. Note that we will never return a empty prompt. + """ + self._runtime_check() + + max_seq_len_in_batch = -1 + # before we start making any changes, validate that we won't over-write the cache + for batch_idx, (seq_id, prompt) in enumerate( + seq_ids_and_prompts.items() + ): + # Validate there aren't other inflight requests for this sequence. + assert seq_id not in self.fetch_metadata + + # Add prompt and inflight tokens to the token array + data = self.active_requests[seq_id] + data.fetch(prompt, num_steps) + + # Compute the total sequence length + if data.seq_len > max_seq_len_in_batch: + max_seq_len_in_batch = data.seq_len + + assert data.seq_len <= self.max_seq_len, ( + f"seq_id: {seq_id} would overrun the max cache length of {self.max_seq_len} " + f"with {len(prompt)} new tokens. Existing length: {data.cached_idx}" + ) + + max_num_pages = ceildiv(max_seq_len_in_batch, self.page_size) + + # Allocate the buffers containing metadata about the batch. + # [0, total_num_pages) are the valid block ids and total_num_pages + # denotes an unassigned block. + batch_size = len(seq_ids_and_prompts) + lut_table_np = np.full( + (batch_size, max_num_pages), self.total_num_pages, dtype=np.uint32 + ) + cache_lengths_np = np.zeros((batch_size,), dtype=np.uint32) + + # Iterate over requests and query prefix cache + all_cache_hit_blocks: set[int] = set() + for batch_idx, (seq_id, prompt) in enumerate( + seq_ids_and_prompts.items() + ): + # Ensure we've called claim for this sequence id. + if seq_id not in self.active_requests: + raise ValueError(f"seq_id: {seq_id} not in active requests.") + + if self.prefix_cache is not None: + data = self.active_requests[seq_id] + # bump the committed_idx, and possibly the cached_idx + prefix_blocks = self.prefix_cache.fetch( + seq_id, + data, + free_block_fn=self.release_block, + alloc_block_fn=self.alloc_block, + ) + all_cache_hit_blocks.update(prefix_blocks) + # Possibly trim the input prompt. + seq_ids_and_prompts[seq_id] = data.prompt_tokens + + # Determine the number of pages required for each sequence. + max_seq_length = 0 + max_cache_length = 0 + total_sequence_length = 0 + total_blocks_to_allocate = 0 + blocks_to_allocate_by_seq = {} + for batch_idx, (seq_id, prompt) in enumerate( + seq_ids_and_prompts.items() + ): + data = self.active_requests[seq_id] + + # Get the existing cache length for this sequence. + cache_length = data.cached_idx + cache_lengths_np[batch_idx] = cache_length + + # Update the maximum lengths seen so far. + max_seq_length = max(max_seq_length, len(prompt)) + max_cache_length = max(max_cache_length, cache_length) + + # Compute the total sequence length and the number of pages required to store it. + total_sequence_length += data.seq_len + num_pages_required = ceildiv(data.seq_len, self.page_size) + + # Compute the number of *new* pages we need to allocate. + num_new_pages = num_pages_required - len(data.blocks) + assert num_new_pages >= 0 + blocks_to_allocate_by_seq[seq_id] = num_new_pages + total_blocks_to_allocate += num_new_pages + + # Check if we have enough free blocks to service all requests. + num_evictable_blocks = 0 + if self.prefix_cache is not None: + # the blocks in the prefix cache that will be used by sequences in + # this batch are no longer eligible for eviction / allocation. + num_evictable_blocks = len( + self.prefix_cache.stale_blocks - all_cache_hit_blocks + ) + num_free_blocks = len(self.available_blocks) + num_evictable_blocks + if total_blocks_to_allocate > num_free_blocks: + raise RuntimeError( + f"Not enough free blocks to service all {len(seq_ids_and_prompts)} requests.\n" + f"Need an additional {total_blocks_to_allocate} blocks to store KV projections for all {total_sequence_length} tokens.\n" + f"But only {num_free_blocks} out of {self.total_num_pages} cache blocks are available to be allocated.\n" + f"You must restart your process and set a smaller batch size or max sequence length.\n" + ) + + # Allocate additional pages for each request in the batch + for batch_idx, (seq_id, num_new_pages) in enumerate( + blocks_to_allocate_by_seq.items() + ): + data = self.active_requests[seq_id] + + # Assign some new pages to this request. + for _ in range(num_new_pages): + next_block = self.alloc_block() + data.blocks.append(next_block) + + # Populate the lookup table with the new pages. + for i, block_idx in enumerate(data.blocks): + lut_table_np[batch_idx, i] = block_idx + + # Build a tensor of maximum lengths. Each step slices the first row to + # advance to the values for the next row. + max_lengths_host = build_max_lengths_tensor( + num_steps, max_seq_length, max_cache_length + ) + + lut_table_host = Tensor.from_numpy(lut_table_np) + cache_lengths_host = Tensor.from_numpy(cache_lengths_np) + + ret_list = [] + for i, device in enumerate(self.devices): + ret_list.append( + RaggedKVCacheInputs( + blocks=self.blocks[i], + cache_lengths=cache_lengths_host.to(device=device), + lookup_table=lut_table_host.to(device=device), + max_lengths=max_lengths_host, + ) + ) + + self._runtime_check() + + return cast(List[KVCacheInputs], ret_list) + + def input_symbols( + self, + ) -> list[PagedCacheInputSymbols]: + return [ + PagedCacheInputSymbols( + kv_blocks=TensorType( + self.params.dtype, + shape=self.block_shape(is_parameterized=True), + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + cache_lengths=TensorType( + DType.uint32, + shape=["batch_size"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + lookup_table=TensorType( + DType.uint32, + shape=["batch_size", "max_num_pages"], + device=DeviceRef(self.devices[i].label, self.devices[i].id), + ), + max_lengths=TensorType( + DType.uint32, shape=["steps_remaining", 2] + ), + ) + for i in range(len(self.devices)) + ] + + def claim(self, n: int) -> list[int]: + """Claims `n` blocks of memory in the cache for incoming requests. + + This returns a list of sequence ids, which identify a sequence's + location within the cache. This sequence id can then be passed + in the fetch function to return the ContinuousBatchingKVCacheCollection + for those sequences. + """ + seq_ids = super().claim(n) + for seq_id in seq_ids: + self.active_requests[seq_id] = PagedCacheMetadata( + self.page_size, self.max_seq_len + ) + if self.prefix_cache is not None: + for seq_id in seq_ids: + self.prefix_cache.external_claim(seq_id) + return seq_ids + + def external_claim(self, seq_ids: list[int]) -> None: + """Variant of the above where sequence ids are reserved externally.""" + super().external_claim(seq_ids) + for seq_id in seq_ids: + self.active_requests[seq_id] = PagedCacheMetadata( + self.page_size, self.max_seq_len + ) + if self.prefix_cache is not None: + for seq_id in seq_ids: + self.prefix_cache.external_claim(seq_id) + + def _count_all_pages(self) -> int: + available_blocks = self.available_blocks + prefix_cache_blocks = set() + if self.prefix_cache is not None: + prefix_cache_blocks = self.prefix_cache.blocks + uncommitted_blocks = set() + for seq_id in self.active_requests: + uncommitted_blocks.update( + self.active_requests[seq_id].uncommitted_blocks + ) + return len(available_blocks | prefix_cache_blocks | uncommitted_blocks) + + def purge_prefix_cache(self) -> None: + if self.prefix_cache is None: + return + evicted = self.prefix_cache.evict_blocks() + for block in evicted: + self.available_blocks.add(block) + + def release(self, seq_id: int) -> None: + """Release `seq_id` provided, marking this sequence as complete. + This returns the seq_id back to the available pool of cache memory, + allowing it to be reused when a new sequence is claimed. + """ + super().release(seq_id) + data = self.active_requests[seq_id] + + if self.prefix_cache is not None: + self.prefix_cache.release(seq_id) + + for block in data.blocks: + self.release_block(block) + del self.active_requests[seq_id] + + def _step( + self, + seq_ids_and_new_tokens: dict[int, np.ndarray], + ) -> None: + """Update the `cache_lengths` objects to not that a new + kv projection step has occurred, and that the underlying memory + has been written to. This `cache_lengths` value is then used + downstream in `fetch` to track what section of memory should + be used in the kernels. + """ + self._runtime_check() + + for seq_id, new_tokens in seq_ids_and_new_tokens.items(): + if seq_id not in self.active_requests: + raise ValueError(f"seq_id: {seq_id} not in active requests.") + + # Write the new tokens into the token array and bump the cached_idx + data = self.active_requests[seq_id] + data.step(new_tokens) + + if self.prefix_cache is not None: + # Bump the committed_idx + self.prefix_cache.step( + seq_id, + data, + free_block_fn=self.release_block, + ) + + expected_num_pages = ceildiv(data.seq_len, self.page_size) + actual_num_pages = len(data.blocks) + if expected_num_pages != actual_num_pages: + raise ValueError( + f"Mismatch between expected and actual number of pages for seq_id: {seq_id}. Expected: {expected_num_pages}, Actual: {actual_num_pages}" + ) + + self._runtime_check() diff --git a/src/max/pipelines/kv_cache/paged_cache_metadata.py b/src/max/pipelines/kv_cache/paged_cache_metadata.py new file mode 100644 index 0000000000..28accfe316 --- /dev/null +++ b/src/max/pipelines/kv_cache/paged_cache_metadata.py @@ -0,0 +1,194 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""PagedAttention-specific metadata for a single sequence.""" + +from __future__ import annotations + +import numpy as np + + +def ceildiv(n: int, d: int) -> int: + """Compute ceil(n/d) using strictly integer arithmetic.""" + q, r = divmod(n, d) + return q + bool(r) + + +class PagedCacheMetadata: + """Metadata for a single sequence in the paged KV cache. + + Token array layout: + + - Committed tokens have been inserted into the prefix cache. This must be a + multiple of the page size. + - Cached tokens are tokens that have a backing KV projection in the cache. + Uncached tokens will be written to the cache when the model is run. + - Committable tokens are tokens that are not yet committed but have a known + value (i.e. not inflight). We can query the prefix cache for such tokens. + - Inflight tokens are slots allocated for tokens that have not been generated + yet. Such tokens have a undefined values. After `fetch`, there should be + `num_steps - 1` inflight tokens. They will be replaced with actual tokens + in `step`. + + committed_idx V seq_len V + +----------------------------------------------------------------+ + | committed | uncommitted | + |----------------------------------------------------------------| + | | committable | | + |----------------------------------------------------------------| + | cached | uncached | + |----------------------------------------------------------------| + | | prompt | inflight | + +----------------------------------------------------------------+ + cached_idx ^ inflight_idx ^ + """ + + def __init__(self, page_size: int, max_seq_len: int) -> None: + self.page_size = page_size + self.committed_idx: int = 0 + self.cached_idx: int = 0 + self.inflight_idx: int = 0 + self.seq_len: int = 0 + self.blocks: list[int] = [] + self.tokens: np.ndarray = np.empty((max_seq_len,), dtype=np.int64) + + @property + def committed_blocks(self) -> list[int]: + return self.blocks[: self.committed_idx // self.page_size] + + @property + def uncommitted_blocks(self) -> list[int]: + return self.blocks[self.committed_idx // self.page_size : self.seq_len] + + @property + def committed_tokens(self) -> np.ndarray: + return self.tokens[: self.committed_idx] + + @property + def uncached_tokens(self) -> np.ndarray: + return self.tokens[self.cached_idx : self.seq_len] + + @property + def prompt_tokens(self) -> np.ndarray: + return self.tokens[self.cached_idx : self.inflight_idx] + + @property + def inflight_tokens(self) -> np.ndarray: + return self.tokens[self.inflight_idx : self.seq_len] + + @property + def committable_tokens_aligned(self) -> np.ndarray: + # Return all tokens that are committable and part of a block that only + # contains committable tokens. + inflight_idx = self.inflight_idx + partial_tokens = inflight_idx % self.page_size + if partial_tokens > 0: + inflight_idx -= partial_tokens + return self.tokens[self.committed_idx : inflight_idx] + + @property + def committable_blocks_aligned(self) -> list[int]: + # Returns all blocks that only contain committable tokens. + return self.blocks[ + self.committed_idx // self.page_size : self.inflight_idx + // self.page_size + ] + + @property + def committable_tokens(self) -> np.ndarray: + # Returns all tokens that are committable. + return self.tokens[self.committed_idx : self.inflight_idx] + + @property + def committable_blocks(self) -> list[int]: + # Returns any block that contains at least one committable token. + return self.blocks[ + self.committed_idx // self.page_size : ceildiv( + self.inflight_idx, self.page_size + ) + ] + + def _validate_indices(self): + assert ( + 0 + <= self.committed_idx + <= self.cached_idx + <= self.inflight_idx + <= self.seq_len + ), "The indices must be in the correct order" + assert self.seq_len <= len(self.tokens), ( + "Sequence has exceeded the max sequence length" + ) + assert self.committed_idx % self.page_size == 0, ( + "The committed_idx must be a multiple of the page size since we " + "can't commit a partial page into the prefix cache" + ) + + def fetch(self, prompt: np.ndarray, num_steps: int) -> None: + """Add prompt to token array and reserve space for inflight tokens.""" + self._validate_indices() + assert len(self.prompt_tokens) == 0, ( + "At the start of fetch, there should be no prompt tokens" + ) + assert len(self.inflight_tokens) == 0, ( + "At the start of fetch, there should be no inflight tokens" + ) + assert len(prompt) > 0, ( + "The prompt provided to fetch should be non-empty" + ) + num_inflight_tokens = num_steps - 1 + self.inflight_idx += len(prompt) + self.seq_len += len(prompt) + num_inflight_tokens + self.tokens[self.cached_idx : self.inflight_idx] = prompt + self._validate_indices() + + def step(self, new_tokens: np.ndarray) -> None: + """Write new tokens into inflight token slots. Also update the cached_idx.""" + self._validate_indices() + assert len(self.prompt_tokens) > 0, ( + "We could not have executed the model without at least one prompt token" + ) + num_inflight_tokens = len(new_tokens) - 1 + assert len(self.inflight_tokens) == num_inflight_tokens, ( + "The existing slots for inflight tokens should correspond to all but the last newly generated token" + ) + self.tokens[self.inflight_idx : self.seq_len] = new_tokens[:-1] + self.cached_idx = self.seq_len + self.inflight_idx = self.seq_len + assert len(self.uncached_tokens) == 0, ( + "After step, all tokens should have a backing KV projection in the cache" + ) + self._validate_indices() + + def undo_fetch(self, prompt: np.ndarray, num_steps: int) -> None: + """Remove prompt from token array and release inflight tokens.""" + self._validate_indices() + assert len(self.prompt_tokens) > 0 + assert len(self.prompt_tokens) == len(prompt) + num_inflight_tokens = num_steps - 1 + assert len(self.inflight_tokens) == num_inflight_tokens + self.seq_len -= len(prompt) + num_inflight_tokens + self.inflight_idx -= len(prompt) + assert len(self.inflight_tokens) == 0 + assert len(self.prompt_tokens) == 0 + self._validate_indices() + + def clear(self) -> None: + assert len(self.blocks) == 0 + self.committed_idx = 0 + self.cached_idx = 0 + self.inflight_idx = 0 + self.seq_len = 0 + + def __repr__(self) -> str: + return f"PagedCacheMetadata(committed_idx={self.committed_idx}, cached_idx={self.cached_idx}, inflight_idx={self.inflight_idx}, seq_len={self.seq_len}, blocks={self.blocks})" diff --git a/src/max/pipelines/kv_cache/prefix_cache.py b/src/max/pipelines/kv_cache/prefix_cache.py new file mode 100644 index 0000000000..07c2de5092 --- /dev/null +++ b/src/max/pipelines/kv_cache/prefix_cache.py @@ -0,0 +1,454 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Prefix cache to enable reuse of KV projections during context encoding with PagedAttention.""" + +from __future__ import annotations + +from typing import Callable, Optional + +import numpy as np +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.graph import BufferType, DeviceRef, Graph, TensorType, ops + +from .paged_cache_metadata import PagedCacheMetadata +from .radix_trie import RadixTrie, TrieNode + + +def construct_cow_strided_memcpy_graph( + block_shape: list[int | str], dtype: DType, devices: list[Device] +) -> Graph: + """ + Returns a graph for performing COW operations on the KV cache. + """ + assert len(block_shape) == 6 + ds = [DeviceRef(device.label, device.id) for device in devices] + blocks_ty = [BufferType(dtype, shape=block_shape, device=d) for d in ds] + block_src_idx_ty = TensorType(DType.uint32, shape=[]) + block_dst_idx_ty = TensorType(DType.uint32, shape=[]) + num_tokens_ty = TensorType(DType.uint32, shape=[]) + + with Graph( + "mo.kv_collection_cow_strided_memcpy.paged", + input_types=[ + block_dst_idx_ty, + block_src_idx_ty, + num_tokens_ty, + *blocks_ty, + ], + output_types=[], + ) as graph: + block_dst_idx, block_src_idx, num_tokens, *all_blocks = graph.inputs + for blocks in all_blocks: + ops.inplace_custom( + "mo.kv_collection_cow_strided_memcpy.paged", + values=[blocks, block_dst_idx, block_src_idx, num_tokens], + out_types=[], + ) + graph.output() + + return graph + + +class PrefixCache: + def __init__( + self, + session: InferenceSession, + page_size: int, + block_shape: list[int | str], + dtype: DType, + devices: list[Device], + tensors: list[Tensor], + enable_cow: bool = True, + ): + self.page_size = page_size + self.enable_cow = enable_cow + self.radix_trie = RadixTrie(page_size=self.page_size) + self.tensors = tensors + + self.cow_count = 0 + if self.enable_cow and self.page_size > 1: + # Load single op graph for performing memory transfers needed for COW + self.cow_strided_memcpy_graph = session.load( + construct_cow_strided_memcpy_graph( + block_shape, + dtype, + devices, + ), + ) + self.all_tokens = 0 + self.cache_hit_tokens = 0 + + # This is a pointer into the radix trie indicating the prefix of the sequence + # that has been committed into the radix trie. + self.active_requests: dict[int, TrieNode] = {} + + def __contains__(self, block: int) -> bool: + """Check if a block is owned by the prefix cache.""" + return block in self.radix_trie.get_all_blocks() + + def external_claim(self, seq_id: int) -> None: + """Claim a sequence for use by the prefix cache. + + This initializes the cursor in the trie for the given sequence at the + root, indicating that no blocks are committed for this sequence yet. + """ + assert seq_id not in self.active_requests + self.active_requests[seq_id] = self.radix_trie.root + + def release(self, seq_id: int) -> None: + """Release a sequence from the prefix cache. + + This decrements the ref count of committed blocks used by the sequence. + """ + assert seq_id in self.active_requests + node = self.active_requests[seq_id] + self.radix_trie.mark_not_in_use_by(node, seq_id) + del self.active_requests[seq_id] + + @property + def blocks(self) -> set[int]: + """Returns all blocks owned by the prefix cache.""" + return self.radix_trie.get_all_blocks() + + @property + def stale_blocks(self) -> set[int]: + """Returns all blocks that are evictable/stale. + + Stale blocks are those that are not in use by any sequence (refcount == 0) + """ + return self.radix_trie.get_evictable_blocks() + + @property + def cache_hit_rate(self) -> float: + """Returns the prefix cache hit rate.""" + if self.all_tokens == 0: + return 0.0 + assert self.cache_hit_tokens <= self.all_tokens + return self.cache_hit_tokens / self.all_tokens + + def validate_req_state_valid( + self, + seq_id: int, + committed_tokens: np.ndarray, + committed_blocks: list[int], + ): + """Check that the committed tokens and blocks match what was actually + committed into the radix trie.""" + assert seq_id in self.active_requests + node = self.active_requests[seq_id] + # Climb up the trie from the given node, accumulating all the + # prefix tokens and blocks. + tokens, blocks = node.get_prefix_tokens_and_blocks() + assert (tokens == committed_tokens).all() + assert blocks == committed_blocks + + def evict_blocks(self, blocks_to_evict: Optional[int] = None) -> list[int]: + """Evict a percentage of all blocks according to a LRU policy on the trie leaves.""" + if blocks_to_evict is None: + blocks_to_evict = len(self.blocks) + return self.radix_trie.evict_blocks(desired_num_evicted=blocks_to_evict) + + def _release_partial_block( + self, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + ) -> None: + """Release the partially cached and uncommitted block. + + There may be a partially cached block if the seq len was not a multiple + of page size after the last `step` operation. We may want to release the + partial block if we can retrieve KV projections for additional tokens + in the block from the cache: + + e.g: + - partial_block b0 = ["I", "love", "to", "dance"] (cached = 2 tokens) + - we have block b1 = ["I", "love", "to", "sing"] (cached = 4 tokens) + in the prefix cache + - we can delete b0 and reuse b1 for the first three tokens for COW + """ + assert data.committed_idx < data.cached_idx + partial_blocks = data.committable_blocks + assert len(partial_blocks) == 1 + free_block_fn(partial_blocks[0]) + data.blocks.pop() + partial_tokens = data.cached_idx - data.committed_idx + assert 0 < partial_tokens < self.page_size + data.cached_idx -= partial_tokens + assert data.committed_idx == data.cached_idx + + def _fetch_query_cache( + self, + seq_id: int, + data: PagedCacheMetadata, + ) -> tuple[TrieNode, list[int]]: + """A helper method used by `fetch` which queries the prefix cache for + full blocks which the request should reuse. + + This method does not modify the state of the prefix cache. + + Returns: + - node: the new position of the trie node for a given sequence once + it adds the prefix blocks to its assigned blocks + - prefix_blocks: blocks the sequence should reuse from the cache + """ + node = self.active_requests.get(seq_id, self.radix_trie.root) + + # If there is only one committable token, that means that the prompt + # is one token. We cannot reduce the prompt length any further since + # the model expects a prompt of length at least 1. + committable_tokens = data.committable_tokens[:-1] + if len(committable_tokens) == 0: + return node, [] + + # Query trie for all but last token. + node, prefix_blocks = self.radix_trie.match_prefix( + committable_tokens, node=node + ) + + return node, prefix_blocks + + def fetch( + self, + seq_id: int, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + alloc_block_fn: Callable[[], int], + ) -> list[int]: + """Extend the kv cache for given request with any cached prefixes. + + This will increment the committed_idx and cached_idx if there is a cache + hit. The prompt will be trimmed in the event that cached_idx is bumped. + """ + node, prefix_blocks = self._fetch_query_cache(seq_id, data) + + # Update the cache hit rate metrics. + num_cache_hit_tokens = len(prefix_blocks) * self.page_size + self.cache_hit_tokens += num_cache_hit_tokens + self.all_tokens += len(data.committable_tokens) - 1 + + # Exit early if there are no cache hits. + if len(prefix_blocks) == 0: + if self.enable_cow: + self._fetch_cow(seq_id, data, free_block_fn, alloc_block_fn) + return [] + + self.active_requests[seq_id] = node + + # Mark the prefix blocks we retrieved from the radix trie cache as + # in use by this sequence so they don't get evicted prematurely. + self.radix_trie.mark_in_use_by(node, seq_id) + + # If there is a block with partially cached tokens, we should release it + # if the cache hit blocks already contain these tokens and more + if data.committed_idx < data.cached_idx and num_cache_hit_tokens > 0: + assert data.committed_idx + num_cache_hit_tokens > data.cached_idx + self._release_partial_block(data, free_block_fn) + + data.blocks.extend(prefix_blocks) + # Bump the committed_idx since we got cache hits + data.committed_idx += num_cache_hit_tokens + data.cached_idx += num_cache_hit_tokens + + if self.enable_cow: + self._fetch_cow(seq_id, data, free_block_fn, alloc_block_fn) + + return prefix_blocks + + def _fetch_cow_query_cache( + self, + node: TrieNode, + committable_tokens: np.ndarray, + partial_tokens: int, + ) -> tuple[Optional[int], int]: + """A helper method used by `_fetch_cow` which queries the prefix cache + for a block resident in prefix cache to copy tokens from for COW. + + This method does not modify the state of the prefix cache. + + Returns: + - partial_match_block: block to copy tokens from, this is None in + the event that performing COW is not beneficial + - num_cache_hit_tokens: tokens to copy from the block + """ + assert self.enable_cow + assert self.page_size > 1 + assert self.cow_strided_memcpy_graph is not None + assert len(committable_tokens) > 0 + assert 0 <= partial_tokens < self.page_size + + # Match page_size tokens in the radix trie + committable_tokens = committable_tokens[:-1] + if len(committable_tokens) == 0: + return None, 0 + committable_tokens_cropped = list(committable_tokens[: self.page_size]) + res = node.find_block_with_largest_common_prefix( + committable_tokens_cropped + ) + if res is None: + return None, 0 + partial_match_block, num_cache_hit_tokens = res + assert 0 < num_cache_hit_tokens < self.page_size + + # No point in performing COW if we have more cached but uncommitted tokens + # in the existing partial block than the matched prefix length. + if num_cache_hit_tokens <= partial_tokens: + return None, 0 + return partial_match_block, num_cache_hit_tokens + + def _fetch_cow( + self, + seq_id: int, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + alloc_block_fn: Callable[[], int], + ) -> None: + """Extend the kv cache for given request with any cached prefixes by + copying a portion of the tokens in a committed block to a fresh block. + + This will keep the committed_idx the same, but increment the cached_idx + by between [1, page_size) tokens if we do perform a cow operation. The + prompt will be trimmed in the event that cached_idx is bumped. + """ + assert self.enable_cow + + # If page_size is 1, there is no need to perform COW + if self.page_size == 1: + return + assert self.cow_strided_memcpy_graph is not None + + committable_tokens = data.committable_tokens + node = self.active_requests[seq_id] + partial_tokens = data.cached_idx - data.committed_idx + partial_match_block, num_cache_hit_tokens = self._fetch_cow_query_cache( + node, committable_tokens, partial_tokens + ) + if partial_match_block is None: + return + assert num_cache_hit_tokens > 0 + assert num_cache_hit_tokens > partial_tokens + + # If we have a partially cached block, we need to release it before + # appending additional blocks. + if partial_tokens > 0: + assert data.committed_idx + num_cache_hit_tokens > data.cached_idx + self._release_partial_block(data, free_block_fn) + + # Copy prefix_len tokens from partial_match_block to new_block. + new_block = alloc_block_fn() + self.cow_count += 1 + self.cow_strided_memcpy_graph.execute( + new_block, + partial_match_block, + num_cache_hit_tokens, + *self.tensors, + ) + data.blocks.append(new_block) + data.cached_idx += num_cache_hit_tokens + assert len(data.prompt_tokens) > 0 + assert data.cached_idx < data.inflight_idx + + def query_fetch_stats( + self, seq_id: int, data: PagedCacheMetadata + ) -> tuple[set[int], int]: + """Query the prefix trie for the cache hit stats for the given sequence. + + This method does not modify the state of the prefix cache. + + Returns: + - prefix_blocks: Prefix cache blocks that would be reused for this seq. + - num_cache_hit_tokens: Number of new cached tokens retrieved from prefix cache. + """ + node, prefix_blocks = self._fetch_query_cache(seq_id, data) + num_cache_hit_tokens = len(prefix_blocks) * self.page_size + + # If COW is enabled, we should consider the number of additional cache + # hits that would be incurred by performing a COW operation. + if self.enable_cow and self.page_size > 1: + committable_tokens = data.committable_tokens + committable_tokens = committable_tokens[num_cache_hit_tokens:] + partial_tokens = data.cached_idx - data.committed_idx + if len(prefix_blocks) > 0: + partial_tokens = 0 + partial_match_block, num_cow_cache_hit_tokens = ( + self._fetch_cow_query_cache( + node, committable_tokens, partial_tokens + ) + ) + if partial_match_block is not None: + num_cache_hit_tokens += num_cow_cache_hit_tokens + + # Determine the number of cache hit tokens, excluding any tokens that + # were already cached in a partial block. + new_cached_idx = max( + data.committed_idx + num_cache_hit_tokens, data.cached_idx + ) + num_cache_hit_tokens = new_cached_idx - data.cached_idx + assert num_cache_hit_tokens >= 0 + return set(prefix_blocks), num_cache_hit_tokens + + def step( + self, + seq_id: int, + data: PagedCacheMetadata, + free_block_fn: Callable[[int], None], + ) -> None: + """Now that we have written to the inflight blocks, we will try to commit + them to the radix trie. + + This increments the committed_idx. We guarantee that the number of committed + tokens will be a multiple of the page size. There may be some uncommitted + tokens left over due to there being a partial page at the end. Thus the + number of uncommitted tokens will always be less than the page size. + """ + committable_tokens = data.committable_tokens_aligned + node = self.active_requests[seq_id] + node, existing_blocks = self.radix_trie.match_prefix( + committable_tokens, node=node + ) + self.active_requests[seq_id] = node + + # If we computed a kv entry for a token that was already cached, + # we will just release that block we just computed. + for b0, b1 in zip(existing_blocks, data.committable_blocks_aligned): + if b0 != b1: + free_block_fn(b1) + + # Replace the inflight blocks with the existing prefix blocks. + committed_block_idx = data.committed_idx // self.page_size + data.blocks[ + committed_block_idx : committed_block_idx + len(existing_blocks) + ] = existing_blocks + data.committed_idx += len(existing_blocks) * self.page_size + + committable_tokens = data.committable_tokens_aligned + committable_blocks = data.committable_blocks_aligned + assert len(committable_tokens) % self.page_size == 0 + assert ( + len(committable_tokens) == len(committable_blocks) * self.page_size + ) + + # If there are any tokens to commit, insert them into the prefix cache. + node = self.radix_trie.insert( + committable_tokens, + committable_blocks, + node=node, + ) + self.active_requests[seq_id] = node + data.committed_idx += len(committable_tokens) + + # Mark the recently committed blocks as in use by this sequence + # so they don't get evicted prematurely. + self.radix_trie.mark_in_use_by(node, seq_id) diff --git a/src/max/pipelines/kv_cache/radix_trie.py b/src/max/pipelines/kv_cache/radix_trie.py new file mode 100644 index 0000000000..ac1be1b26b --- /dev/null +++ b/src/max/pipelines/kv_cache/radix_trie.py @@ -0,0 +1,483 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Dict, List, Optional, Sequence, Set, Tuple, Union + +import numpy as np + +from .simple_trie import SimpleTrie + +TokenId = Any +BlockId = Any +SeqId = int + + +from collections import OrderedDict + + +def align_down(x: int, y: int) -> int: + return (x // y) * y + + +def _token_prefix_match_len( + tokens0: np.ndarray, tokens1: np.ndarray, page_size: int +) -> int: + """Computes the length of maximum shared prefix of two tokens, aligned by + `page_size`. + + e.g: _token_prefix_match_len(["i", "like", "dogs"], ["i", "like", "cats"], page_size = 1) => 2 + _token_prefix_match_len(["i", "like", "dogs"], ["we", "like", "cats"], page_size = 1) => 0 + _token_prefix_match_len(["i", "like", "dogs"], ["i", "like", "dogs", "and", "cats"], page_size = 1) => 3 + """ + assert len(tokens0) % page_size == 0 + assert len(tokens1) % page_size == 0 + shorter_len = min(len(tokens0), len(tokens1)) + diff = tokens0[:shorter_len] != tokens1[:shorter_len] + idx = np.nonzero(diff)[0] + if len(idx) == 0: + return shorter_len + return align_down(idx[0], page_size) + + +def _token_to_key(tokens: np.ndarray, page_size: int) -> tuple[TokenId, ...]: + assert len(tokens) >= page_size, ( + f"tokens must be at least page_size ({page_size}) long but is only {len(tokens)} tokens" + ) + return tuple(tokens[:page_size]) + + +class TrieNode: + """A TrieNode consists of a list of tokens and blocks. + + - Tokens are the ids of the tokens in the sequence. + - Blocks are the offsets into the KVCache region that back the KV entries + for a given token. I.e: the page index + """ + + node_id_counter = 0 + + def __init__(self) -> None: + """Constructs a TrieNode.""" + # each node is assigned a unique id to look it up in the lru cache + self.node_id = TrieNode.node_id_counter + TrieNode.node_id_counter += 1 + + self.children: Dict[tuple[TokenId, ...], TrieNode] = {} + # Typically in a map, we would have keys mapping to values. + # To avoid collision with KV cache terminology, we call them tokens and blocks. + # + # Only the root should have empty tokens/blocks + self.tokens: np.ndarray = np.array([]) + self.blocks: List[BlockId] = [] + # Only the root should have a null parent + self.parent: Optional[TrieNode] = None + # Sequences that are using the blocks owned by this trie node + # The node can only be evicted if self.active_seqs is empty + self.active_seqs: Set[SeqId] = set() + # A trie containing only the keys in the self.children dict where each + # key is length exactly page_size + self.key_trie = SimpleTrie() + + def is_leaf(self) -> bool: + """Returns true if the node is a leaf node.""" + return len(self.children) == 0 + + def is_root(self) -> bool: + """Returns true if the node is the root node.""" + return self.parent is None + + def is_evictable(self) -> bool: + """Returns true if the node is evictable.""" + return not self.is_root() and len(self.active_seqs) == 0 + + def find_block_with_largest_common_prefix( + self, target: Sequence[TokenId] + ) -> Optional[Tuple[BlockId, int]]: + """Returns any block in the trie that has the given prefix.""" + res = self.key_trie.find_string_with_largest_common_prefix(target) + if res is None: + return None + key, prefix_len = res + if prefix_len == 0: + return None + assert prefix_len <= len(target) + return self.children[tuple(key)].blocks[0], prefix_len + + def get_prefix_tokens_and_blocks(self) -> Tuple[np.ndarray, List[BlockId]]: + curr: Optional[TrieNode] = self + tokens: List[TokenId] = [] + blocks: List[BlockId] = [] + while curr is not None: + tokens.extend(curr.tokens[::-1]) + blocks.extend(curr.blocks[::-1]) + curr = curr.parent + return np.array(tokens, dtype=np.int64)[::-1], blocks[::-1] + + +class LRUCache(OrderedDict): + """Least recently used block cache to support O(1) eviction operations.""" + + def __init__(self): + super().__init__() + + def __setitem__(self, key: int, value: TrieNode) -> None: + super().__setitem__(key, value) + super().move_to_end(key) + + def move_to_front(self, key: int) -> None: + super().move_to_end(key, last=False) + + def pop_front(self) -> TrieNode: + return super().popitem(last=False)[-1] + + +class RadixTrie: + """This RadixTrie is specially designed for prefix caching in paged attention. + + The RadixTrie allows for efficient insertion and matching of sequences. It + matches each prefix of tokens in a sequence to its corresponding blocks. + Compared to a naive trie, the RadixTrie allows storing multiple tokens in a + single node for less indirection and faster access. + + Blocks in the RadixTrie should be immutable and committed. If it is in the + RadixTrie, it is eligible for sharing. An inflight or uncommitted block that + is being written to by a sequence should not be in the RadixTrie. + + The RadixTrie allows for an LRU eviction policy for its leaves. We only allow + evictions if no active sequences are using the node. + + Currently, the RadixTrie assumes that the paged KVCache page size is 1. + + This implementation is based off of SGLang: + - https://github.com/sgl-project/sglang/blob/337fe53ac41c68d6f171ef3b446f55eb0e98f77c/python/sglang/srt/mem_cache/radix_cache.py#L58 + """ + + def __init__(self, page_size: int = 1) -> None: + """Constructs a RadixTrie.""" + self.root = TrieNode() + self.page_size = page_size + self.evictable_blocks: set[BlockId] = set() + self.all_blocks: set[BlockId] = set() + + # the lru cache contains each evictable block in the trie + self.lru_cache = LRUCache() + + def _check_node_valid(self, node: TrieNode): + """Rudimentary checks of data structure invariants for TrieNode.""" + if self.root == node: + assert len(node.tokens) == 0 + assert len(node.blocks) == 0 + assert not node.parent + else: + assert len(node.tokens) > 0 + assert len(node.blocks) > 0 + assert node.parent + assert len(node.tokens) % self.page_size == 0 + assert len(node.tokens) // self.page_size == len(node.blocks) + + def insert( + self, + tokens: Union[np.ndarray, List[TokenId]], + blocks: List[BlockId], + node: Optional[TrieNode] = None, + ) -> TrieNode: + """Inserts `tokens` and `blocks` into the trie. + + We assume that each block contains exactly one token so the length of both + input lists must match. + + Args: + tokens: Tokens to insert into trie + blocks: KV cache block for each token + node: Node to begin insertion at. If this is not a leaf node, blocks + in the tree are overwritten. + Return: + trie_node: Node corresponding to end of the sequence where future + generated tokens can be inserted + """ + + if isinstance(tokens, list): + tokens = np.array(tokens) + + def insert_helper( + prev: TrieNode, tokens: np.ndarray, blocks: List[BlockId] + ) -> TrieNode: + if len(tokens) == 0: + return prev + + key = _token_to_key(tokens, self.page_size) + if key not in prev.children: + # insert new node + curr = TrieNode() + curr.parent = prev + curr.tokens = tokens + curr.blocks = blocks + prev.children[key] = curr + prev.key_trie.insert(key) + assert curr.is_evictable() and curr.is_leaf() + self.evictable_blocks.update(blocks) + self.lru_cache[curr.node_id] = curr + self.all_blocks.update(blocks) + + curr = prev.children[key] + prefix_len = _token_prefix_match_len( + curr.tokens, tokens, self.page_size + ) + + if prefix_len == len(curr.tokens) and prefix_len == len(tokens): + return curr + + unmatched_tokens = tokens[prefix_len:] + unmatched_blocks = blocks[prefix_len // self.page_size :] + if prefix_len == len(curr.tokens): + return insert_helper(curr, unmatched_tokens, unmatched_blocks) + + # this means that we got a partial match and must split the curr node + # (prev) -> (curr) + # becomes: + # (prev) -> (parent) -> (child) + (parent, _) = self._split_node(curr, prefix_len) + unmatched_tokens = tokens[prefix_len:] + unmatched_blocks = blocks[prefix_len // self.page_size :] + return insert_helper(parent, unmatched_tokens, unmatched_blocks) + + if len(tokens) % self.page_size != 0: + msg = f"Insertion failed: the number of tokens is not divisible by the page size. len(tokens) == {len(tokens)} but page_size == {self.page_size}." + raise ValueError(msg) + if len(tokens) // self.page_size != len(blocks): + msg = f"Insertion failed: the number of tokens and blocks do not match. len(tokens) // self.page_size == {len(tokens)} // {self.page_size} == {len(tokens) // self.page_size} but len(blocks) == {len(blocks)}." + raise ValueError(msg) + + if node is None: + node = self.root + + if len(tokens) == 0: + return node + + # clone to avoid mutating the original lists + tokens = tokens.copy() + blocks = blocks.copy() + return insert_helper(node, tokens, blocks) + + def match_prefix( + self, + tokens: Union[np.ndarray, List[TokenId]], + node: Optional[TrieNode] = None, + ) -> Tuple[TrieNode, List[BlockId]]: + """Matches the input `tokens` with the contents of the trie. + + Args: + tokens: tokens to search the trie for + node: Node to begin matching at. + Return: + Tuple containing: + - trie_node: Node corresponding to end of matched prefix where + future generated tokens can be inserted. + - block_list: KV cache blocks for matched prefix + """ + if isinstance(tokens, list): + tokens = np.array(tokens) + + def match_prefix_helper( + prev: TrieNode, tokens: np.ndarray, blocks: List[BlockId] + ) -> TrieNode: + if len(tokens) == 0: + return prev + + key = _token_to_key(tokens, self.page_size) + if key not in prev.children: + return prev + + curr = prev.children[key] + prefix_len = _token_prefix_match_len( + curr.tokens, tokens, self.page_size + ) + if prefix_len < len(curr.tokens): + # (prev) -> (curr) + # becomes: + # (prev) -> (parent) -> (child) + (parent, _) = self._split_node(curr, prefix_len) + blocks.extend(parent.blocks) + return parent + else: + blocks.extend(curr.blocks) + return match_prefix_helper(curr, tokens[prefix_len:], blocks) + + if node is None: + node = self.root + blocks: List[BlockId] = [] + + if len(tokens) == 0: + return node, [] + + tokens = tokens[: align_down(len(tokens), self.page_size)] + curr = match_prefix_helper(node, tokens, blocks) + return curr, blocks + + def _split_node( + self, node: TrieNode, split_len: int + ) -> Tuple[TrieNode, TrieNode]: + """Splits the provided node into two. + + The resulting parent node receives exactly `split_len` tokens/blocks, and + the child receives the remainder. + + before │ after splitting w/ `split_len` = 2 + │ ┌────────┐ + │ │ ab │ (parent) + ┌────────┐ │ └───▲────┘ + │ abcdef │ │ │ + └────────┘ │ ┌───▼────┐ + │ │ cdef │ (child) + │ └────────┘ + """ + assert node != self.root + assert split_len > 0 + assert split_len % self.page_size == 0 + + parent = TrieNode() + child = node + parent.tokens, child.tokens = ( + child.tokens[:split_len], + child.tokens[split_len:], + ) + parent.blocks, child.blocks = ( + child.blocks[: split_len // self.page_size], + child.blocks[split_len // self.page_size :], + ) + + parent.parent = child.parent + assert parent.parent is not None + assert len(parent.tokens) > 0 + parent_key = _token_to_key(parent.tokens, self.page_size) + parent.parent.children[parent_key] = parent + parent.parent.key_trie.insert(parent_key) + child_key = _token_to_key(child.tokens, self.page_size) + parent.children = {child_key: child} + parent.key_trie.insert(child_key) + self.lru_cache[child.node_id] = child + child.parent = parent + + parent.active_seqs = child.active_seqs.copy() + if parent.is_evictable(): + self.lru_cache[parent.node_id] = parent + + self._check_node_valid(parent) + self._check_node_valid(child) + return (parent, child) + + def mark_in_use_by(self, node: TrieNode, seq_id: SeqId): + """Climb up the trie starting from node, marking each node as being + in use by this seq.""" + + curr = node + while curr != self.root: + assert curr is not None + # optimization: if this node is already marked as using this sequence, + # assume that it is already marked for its parents as well + if seq_id in curr.active_seqs: + break + curr.active_seqs.add(seq_id) + if not curr.is_evictable(): + self.evictable_blocks -= set(curr.blocks) + if curr.node_id in self.lru_cache: + del self.lru_cache[curr.node_id] + assert curr.parent is not None + curr = curr.parent + + def mark_not_in_use_by(self, node: TrieNode, seq_id: SeqId): + """Climb up the trie starting from node, marking each node as no longer + in use by this seq. Since nodes without any users may be eligible for + eviction, we also update its last_access_time.""" + + curr = node + while curr != self.root: + assert curr is not None + assert seq_id in curr.active_seqs + curr.active_seqs.remove(seq_id) + if curr.is_evictable(): + self.evictable_blocks.update(curr.blocks) + self.lru_cache[curr.node_id] = curr + assert curr.parent is not None + curr = curr.parent + + def evict_blocks(self, desired_num_evicted: int) -> List[BlockId]: + """Attempt to evict at most `desired_num_evicted` blocks from trie.""" + evicted_blocks: List[BlockId] = [] + + while len(evicted_blocks) < desired_num_evicted and self.lru_cache: + leaf = self.lru_cache.pop_front() + # we guarantee that the parent node will only be evicted after all + # its children have been evicted. as such, this node we will evict + # is a leaf + assert leaf.is_evictable() and leaf.is_leaf() + key = _token_to_key(leaf.tokens, self.page_size) + num_blocks_to_evict = min( + desired_num_evicted - len(evicted_blocks), + len(leaf.blocks), + ) + assert num_blocks_to_evict > 0 + num_tokens_to_evict = num_blocks_to_evict * self.page_size + blocks_left, blocks_to_evict = ( + leaf.blocks[:-num_blocks_to_evict], + leaf.blocks[-num_blocks_to_evict:], + ) + leaf.blocks = blocks_left + leaf.tokens = leaf.tokens[:-num_tokens_to_evict] + evicted_blocks.extend(blocks_to_evict) + if leaf.blocks: + self.lru_cache[leaf.node_id] = leaf + self.lru_cache.move_to_front(leaf.node_id) + else: + parent = leaf.parent + assert parent is not None + del parent.children[key] + del parent.key_trie[key] + + self.evictable_blocks.difference_update(evicted_blocks) + self.all_blocks.difference_update(evicted_blocks) + if len(evicted_blocks) < desired_num_evicted: + assert not self.evictable_blocks + assert len(self.lru_cache) == 0 + + return evicted_blocks + + def get_all_blocks(self) -> set[BlockId]: + """Returns the total number of blocks in the trie.""" + return self.all_blocks + + def get_evictable_blocks(self) -> set[BlockId]: + """Returns the number of blocks that are eligible for eviction.""" + return self.evictable_blocks + + def pretty_format(self, print_blocks: bool = False) -> List[str]: + """Formats the contents of the trie.""" + + def helper(node: TrieNode, indent: int, lines: List[str]): + for _, child in node.children.items(): + tokens = child.tokens + token_list = tokens.tolist() + if print_blocks: + lines.append(f"{'-' * indent}{token_list} : {child.blocks}") + else: + lines.append(f"{'-' * indent}{token_list}") + helper(child, indent + 2, lines) + + lines: List[str] = [] + helper(self.root, 0, lines) + return lines + + def pretty_print(self, print_blocks: bool = True): + """Prints the contents of the trie.""" + for line in self.pretty_format(print_blocks): + print(line) diff --git a/src/max/pipelines/kv_cache/simple_trie.py b/src/max/pipelines/kv_cache/simple_trie.py new file mode 100644 index 0000000000..3ae86eb6a6 --- /dev/null +++ b/src/max/pipelines/kv_cache/simple_trie.py @@ -0,0 +1,152 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any, Optional, Sequence, Tuple + +Key = Any + + +class SimpleNode: + """A node in a simple trie data structure.""" + + def __init__(self): + # Pointer to the children of this node + self.children: dict[Key, SimpleNode] = {} + # Whether this node is the end of a word + self.is_eow: bool = False + + +class SimpleTrie: + """A simple prefix trie with basic set insertion and deletion operations. + + Unlike the RadixTrie, this trie only have one item at each node and does not + map multiple keys to multiple values. Instead, it just stores a set of keys. + """ + + def __init__(self): + self.root = SimpleNode() + + def insert(self, s: Sequence[Key]): + """Inserts a sequence into the trie.""" + curr = self.root + for ch in s: + if ch not in curr.children: + curr.children[ch] = SimpleNode() + curr = curr.children[ch] + curr.is_eow = True + + def _search(self, s: Sequence[Key]) -> Tuple[SimpleNode, list[Key]]: + """Internal helper method to search for a sequence in the trie. + + Args: + s: The sequence to search for + + Returns: + A tuple containing: + - The last node reached during the search + - List of keys matched during the search + """ + curr = self.root + matched: list[Key] = [] + for ch in s: + if ch not in curr.children: + return curr, matched + matched.append(ch) + curr = curr.children[ch] + return curr, matched + + def find_string_with_largest_common_prefix( + self, target: Sequence[Key] + ) -> Optional[Tuple[Sequence[Key], int]]: + """Returns a sequence in the trie that shares the longest common prefix + with the target. + + If a match is found, returns a tuple containing: + - The matched sequence + - Length of the common prefix + Returns None if no match is found + """ + curr, matched = self._search(target) + prefix_len = len(matched) + + if prefix_len == 0: + return None + + # Keep going down left spine to find any string in trie that has s + # as its prefix + s = matched + while not curr.is_eow: + if not curr.children: + return None + ch = next(iter(curr.children)) + curr = curr.children[ch] + s.append(ch) + + return s, prefix_len + + def __contains__(self, s: Sequence[Key]) -> bool: + """Checks if the trie contains the exact sequence.""" + node, matched = self._search(s) + return len(matched) == len(s) and node.is_eow + + def __delitem__(self, s: Sequence[Key]) -> None: + """Deletes a sequence from the trie.""" + + def _remove( + root: Optional[SimpleNode], idx: int + ) -> Optional[SimpleNode]: + if not root: + return None + + if idx == len(s): + assert root.is_eow + root.is_eow = False + if len(root.children) == 0: + del root + root = None + return root + + ch = s[idx] + child = _remove(root.children[ch], idx + 1) + if child is None: + del root.children[ch] + else: + root.children[ch] = child + + if len(root.children) == 0 and not root.is_eow: + del root + root = None + return root + + _remove(self.root, 0) + + def pretty_format(self) -> list[str]: + """Returns a formatted string representation of the trie for debugging.""" + lines: list[str] = [] + + def helper(node: SimpleNode, indent: int): + if node.is_eow: + lines.append(f"{'-' * indent}*") + for ch, child in node.children.items(): + lines.append(f"{'-' * indent}{ch}") + helper(child, indent + 2) + + helper(self.root, 0) + return lines + + def pretty_print(self) -> None: + """Prints a formatted visual representation of the trie for debugging.""" + print("SimpleTrie(") + for line in self.pretty_format(): + print(line) + print(")") diff --git a/src/max/pipelines/nn/__init__.py b/src/max/pipelines/nn/__init__.py new file mode 100644 index 0000000000..22b3b1bac4 --- /dev/null +++ b/src/max/pipelines/nn/__init__.py @@ -0,0 +1,88 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .attention import ( + Attention, + AttentionImpl, + AttentionImplQKV, + AttentionQKV, + AttentionWithoutMask, + AttentionWithRope, + AttentionWithRopeQKV, + AttentionWithRopeV2, + DistributedAttentionImpl, + DistributedAttentionWithRope, + GPTQAttentionWithRope, + NaiveAttentionWithRope, +) +from .comm import Signals +from .conv import Conv1D, Conv2D, Conv3D +from .embedding import Embedding, EmbeddingV2, VocabParallelEmbedding +from .kernels import MHAMaskVariant +from .layer import Layer, LayerV2 +from .linear import MLP, MLPV2, DistributedMLP, GPTQLinearV2, Linear, LinearV2 +from .norm import DistributedRMSNorm, LayerNorm, LayerNormV2, RMSNorm, RMSNormV2 +from .rotary_embedding import OptimizedRotaryEmbedding, RotaryEmbedding +from .sequential import Sequential +from .transformer import ( + DistributedTransformer, + DistributedTransformerBlock, + NaiveTransformer, + NaiveTransformerBlock, + Transformer, + TransformerBlock, +) + +__all__ = [ + "Attention", + "AttentionImpl", + "AttentionImplQKV", + "AttentionQKV", + "AttentionWithRope", + "AttentionWithRopeQKV", + "AttentionWithRopeV2", + "AttentionWithoutMask", + "Conv1D", + "Conv2D", + "Conv3D", + "DistributedAttentionImpl", + "DistributedAttentionWithRope", + "DistributedMLP", + "DistributedRMSNorm", + "DistributedTransformer", + "DistributedTransformerBlock", + "Embedding", + "EmbeddingV2", + "GPTQAttentionWithRope", + "GPTQLinearV2", + "Layer", + "LayerNorm", + "LayerNormV2", + "LayerV2", + "Linear", + "LinearV2", + "MHAMaskVariant", + "MLP", + "MLPV2", + "NaiveAttentionWithRope", + "NaiveTransformer", + "NaiveTransformerBlock", + "OptimizedRotaryEmbedding", + "RMSNorm", + "RMSNormV2", + "RotaryEmbedding", + "Sequential", + "Signals", + "Transformer", + "TransformerBlock", +] diff --git a/src/max/pipelines/nn/_identity.py b/src/max/pipelines/nn/_identity.py new file mode 100644 index 0000000000..eeb038c45a --- /dev/null +++ b/src/max/pipelines/nn/_identity.py @@ -0,0 +1,71 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Utility classes for using objects as keys in data structures.""" + +from collections.abc import MutableMapping, MutableSet + + +# From https://stackoverflow.com/questions/16994307/identityset-in-python +class IdentitySet(MutableSet): + """Set that uses object `id` as keys to support unhashable types.""" + + def __init__(self, iterable=()): + self.map = {} # id -> object + self |= iterable # add elements from iterable to the set (union) + + def __len__(self): + return len(self.map) + + def __iter__(self): + return iter(self.map.values()) + + def __contains__(self, x): + return id(x) in self.map + + def add(self, value): + """Add an element.""" + self.map[id(value)] = value + + def discard(self, value): + """Remove an element. Do not raise an exception if absent.""" + self.map.pop(id(value), None) + + def __repr__(self): + if not self: + return "%s()" % (self.__class__.__name__,) + return "%s(%r)" % (self.__class__.__name__, list(self)) + + +class IdentityMap(MutableMapping): + """Map that uses object `id` as keys to support unhashable types.""" + + def __init__(self): + self.key_map = {} # id -> object + self.value_map = {} # id -> Value + + def __getitem__(self, key): + return self.value_map[id(key)] + + def __setitem__(self, key, value): + self.key_map[id(key)] = key + self.value_map[id(key)] = value + + def __delitem__(self, key): + del self.key_map[id(key)] + del self.value_map[id(key)] + + def __iter__(self): + return iter(self.key_map.values()) + + def __len__(self): + return len(self.key_map) diff --git a/src/max/pipelines/nn/attention/__init__.py b/src/max/pipelines/nn/attention/__init__.py new file mode 100644 index 0000000000..5536ee5871 --- /dev/null +++ b/src/max/pipelines/nn/attention/__init__.py @@ -0,0 +1,44 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""The attention mechanism used within the model.""" + +from .attention import Attention, AttentionQKV +from .attention_with_rope import ( + AttentionWithRope, + AttentionWithRopeQKV, + AttentionWithRopeV2, + DistributedAttentionWithRope, + GPTQAttentionWithRope, +) +from .attention_without_mask import AttentionWithoutMask +from .interfaces import ( + AttentionImpl, + AttentionImplQKV, + DistributedAttentionImpl, +) +from .naive_attention_with_rope import NaiveAttentionWithRope + +__all__ = [ + "Attention", + "AttentionQKV", + "AttentionImpl", + "AttentionImplQKV", + "AttentionWithRope", + "DistributedAttentionImpl", + "DistributedAttentionWithRope", + "AttentionWithRopeQKV", + "AttentionWithoutMask", + "NaiveAttentionWithRope", + "AttentionWithRopeV2", + "GPTQAttentionWithRope", +] diff --git a/src/max/pipelines/nn/attention/attention.py b/src/max/pipelines/nn/attention/attention.py new file mode 100644 index 0000000000..5eb57f2815 --- /dev/null +++ b/src/max/pipelines/nn/attention/attention.py @@ -0,0 +1,157 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""A vanilla opaque KV Cache optimized attention mechanism.""" + +from dataclasses import dataclass +from typing import Union + +from max.dtype import DType +from max.graph import TensorValue, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + PagedKVCacheCollection, +) + +from ..kernels import flash_attention, fused_qkv_matmul +from .interfaces import AttentionImpl, AttentionImplQKV + + +@dataclass +class Attention(AttentionImpl): + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + if isinstance(kv_collection, PagedKVCacheCollection): + raise ValueError( + "Paged attention not supported for Attention on non-ragged tensors." + ) + + if "attention_mask" not in kwargs: + raise ValueError("attention_mask not passed as input to Attention") + attention_mask = kwargs["attention_mask"] + if attention_mask.dtype != x.dtype: + msg = ( + "expected attention_mask and x to have the same dtype, but got" + f" {attention_mask.dtype} and {x.dtype}, respectively." + ) + raise ValueError(msg) + + # Get attributes from inputs + batch_size, seq_len = x.shape[0], x.shape[1] + + # Call into fused qkv matmul. + xq = fused_qkv_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + ) + + xq = ops.reshape( + xq, + [ + batch_size, + seq_len, + self.n_heads, + self.kv_params.head_dim, + ], + ) + + # Calculate Flash Attention + attn_out = flash_attention( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + attention_mask=attention_mask, + valid_lengths=kwargs["valid_lengths"], + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[batch_size, seq_len, -1]) + + return self.wo(attn_out) + + +@dataclass +class AttentionQKV(AttentionImplQKV): + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + if isinstance(kv_collection, PagedKVCacheCollection): + raise ValueError( + "Paged attention not supported for Attention on non-ragged tensors." + ) + + if "attention_mask" not in kwargs: + raise ValueError("attention_mask not passed as input to Attention") + attention_mask = kwargs["attention_mask"] + if attention_mask.dtype != x.dtype: + msg = ( + "expected attention_mask and x to have the same dtype, but got" + f" {attention_mask.dtype} and {x.dtype}, respectively." + ) + raise ValueError(msg) + + wqkv = ops.concat((self.wq, self.wk, self.wv)).transpose(0, 1) + wqkv = ops.cast(wqkv, x.dtype) + + # Get attributes from inputs + batch_size, seq_len = x.shape[0], x.shape[1] + + # Call into fused qkv matmul. + xq = fused_qkv_matmul( + self.kv_params, + input=x, + wqkv=wqkv, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + n_heads=self.n_heads, + ) + + xq = ops.reshape( + xq, + [ + batch_size, + seq_len, + self.n_heads, + self.kv_params.head_dim, + ], + ) + + # Calculate Flash Attention + attn_out = flash_attention( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + attention_mask=attention_mask, + valid_lengths=kwargs["valid_lengths"], + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[batch_size, seq_len, -1]) + + return self.wo(attn_out) diff --git a/src/max/pipelines/nn/attention/attention_with_rope.py b/src/max/pipelines/nn/attention/attention_with_rope.py new file mode 100644 index 0000000000..a9d4c70fb8 --- /dev/null +++ b/src/max/pipelines/nn/attention/attention_with_rope.py @@ -0,0 +1,626 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An opaque KV Cache optimized attention mechanism with Rope.""" + +from __future__ import annotations + +import math +from dataclasses import dataclass +from typing import Callable, List, Optional, Union + +from max.dtype import DType +from max.graph import ( + BufferValue, + DeviceRef, + TensorValue, + Weight, + ops, +) +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..clamp import clamp +from ..kernels import ( + MHAMaskVariant, + flash_attention_ragged, + fused_qk_ragged_rope, + fused_qkv_ragged_matmul, + fused_qkv_ragged_matmul_quantized, +) +from ..layer import LayerV2 +from ..linear import LinearV2 +from ..rotary_embedding import OptimizedRotaryEmbedding +from .interfaces import ( + AttentionImpl, + AttentionImplQKV, + AttentionImplV2, + DistributedAttentionImpl, +) + + +@dataclass +class AttentionWithRope(AttentionImpl): + # This class will not use the RotaryEmbedding to + # calculate rope, but it already includes a freqs_cis + # calculation, which we will borrow + + rope: OptimizedRotaryEmbedding + bias: Optional[TensorValue] = None + perm_idx: Optional[TensorValue] = None + quantization_config: Optional[QuantizationConfig] = None + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + # Call into fused qkv ragged matmul. + if self.quantization_config: + xq = fused_qkv_ragged_matmul_quantized( + self.kv_params, + input=x, + wqkv=self.wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + bias=self.bias, + perm_idx=self.perm_idx, + quantization_config=self.quantization_config, + ) + else: + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + bias=self.bias, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + if xq.device is not None: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype).to(xq.device) + else: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + self.layer_idx, + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.wo(attn_out) + + +class AttentionWithRopeV2(AttentionImplV2): + """Implementation of attention that uses the rope frequency. + + `AttentionWithRopeV2` will replace `AttentionWithRope` as we roll out + the new Layer API. + """ + + # This class will not use the RotaryEmbedding to + # calculate rope, but it already includes a freqs_cis + # calculation, which we will borrow + rope: OptimizedRotaryEmbedding + + def __init__( + self, + *, + rope: OptimizedRotaryEmbedding, + num_attention_heads: int, + num_key_value_heads: int, + hidden_size: int, + kv_params: KVCacheParams, + layer_idx: int, + dtype: DType = DType.float32, + device: DeviceRef = DeviceRef.CPU(), + linear_cls: Callable[..., LinearV2] = LinearV2, + stacked_qkv: bool = False, + scale: float | None = None, + has_bias: bool = False, + clip_qkv: float | None = None, + ): + """Initializes the attention layer. + + Args: + rope: The rope layer to borrow the freq_cis value from. + num_attention_heads: The number of attention heads. + num_key_value_heads: Number of key/value heads. + hidden_size: The dimension of the hidden states. + kv_params: KV Cache Params, including the number of kv heads, the head dim, and data type. + layer_idx: The layer number associated with this Attention block. + dtype: DType of the + device: Device to place the weights and run the computation. + linear_cls: Linear class to use for the outputs dense layer. + stacked_qkv: Whether the weights are stacked together. + scale: Value used to scale the results of the attention output. + has_bias: Whether to use an attention bias. + clip_qkv: If provided, the QKV weights are clamped between + `[-clip_qkv, clip_qkv]` + """ + + super().__init__() + self.rope = rope + self.n_heads = num_attention_heads + self.layer_idx = layer_idx + self.kv_params = kv_params + self.has_bias = has_bias + self.scale = ( + scale if scale else math.sqrt(1.0 / self.kv_params.head_dim) + ) + self.clip_qkv = clip_qkv + + if stacked_qkv and clip_qkv: + raise ValueError( + "`clip_qkv` not yet supported when `stack_qkv=True`." + ) + + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + kv_weight_dim = ( + hidden_size // num_attention_heads + ) * num_key_value_heads + + self.stacked_qkv = stacked_qkv + + if stacked_qkv: + # To keep the weight names consistent with the transformers attention, + # the names are suffixed ".weight". + self.qkv_proj = Weight( + name="qkv_proj.weight", + dtype=dtype, + shape=[hidden_size + 2 * kv_weight_dim, hidden_size], + ) + else: + self.q_proj = Weight( + name="q_proj.weight", + dtype=dtype, + shape=[hidden_size, hidden_size], + ) + self.k_proj = Weight( + name="k_proj.weight", + dtype=dtype, + shape=[kv_weight_dim, hidden_size], + ) + self.v_proj = Weight( + name="v_proj.weight", + dtype=dtype, + shape=[kv_weight_dim, hidden_size], + ) + + if has_bias: + assert not stacked_qkv, "Bias is not supported with stacked qkv." + + self.bias_q = Weight( + name="q_proj.bias", dtype=dtype, shape=[hidden_size] + ) + self.bias_k = Weight( + name="k_proj.bias", dtype=dtype, shape=[kv_weight_dim] + ) + self.bias_v = Weight( + name="v_proj.bias", dtype=dtype, shape=[kv_weight_dim] + ) + + self.o_proj = linear_cls( + in_dim=hidden_size, out_dim=hidden_size, dtype=dtype, device=device + ) + + @property + def wqkv(self) -> TensorValue: + """The concatenation of q, k, and v weight vectors.""" + if self.stacked_qkv: + return self.qkv_proj + else: + wq: TensorValue = self.q_proj + wk: TensorValue = self.k_proj + wv: TensorValue = self.v_proj + if self.clip_qkv: + wq = clamp(wq, min=-self.clip_qkv, max=self.clip_qkv) + wk = clamp(wk, min=-self.clip_qkv, max=self.clip_qkv) + wv = clamp(wv, min=-self.clip_qkv, max=self.clip_qkv) + return ops.concat((wq, wk, wv)) + + @property + def wqkv_bias(self) -> TensorValue | None: + """The concatenation of q, k, and v bias weight vectors.""" + if not self.has_bias: + return None + + return ops.concat((self.bias_q, self.bias_k, self.bias_v)) + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + layer_idx = ops.constant(self.layer_idx, DType.uint32) + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + bias=self.wqkv_bias, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=layer_idx, + n_heads=self.n_heads, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + if xq.device is not None: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype).to(xq.device) + else: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + layer_idx, + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.o_proj(attn_out) + + +class GPTQAttentionWithRope(AttentionWithRopeV2): + """Implementation of the GPT-Q attention layer.""" + + def __init__( + self, + quantization_config: QuantizationConfig, + rope: OptimizedRotaryEmbedding, + num_attention_heads: int, + num_key_value_heads: int, + hidden_size: int, + kv_params: KVCacheParams, + layer_idx: int, + dtype: DType = DType.float32, + device: DeviceRef | None = None, + scale: float | None = None, + linear_cls: Callable[..., LinearV2] = LinearV2, + ): + # Skip AttentionWithRopeV2.__init__ because the weights are created + # differently. + LayerV2.__init__(self) + self.quantization_config = quantization_config + self.rope = rope + self.n_heads = num_attention_heads + self.layer_idx = layer_idx + self.kv_params = kv_params + self.hidden_size = hidden_size + self.device = device + self.scale = ( + scale if scale else math.sqrt(1.0 / self.kv_params.head_dim) + ) + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + self.kv_weight_dim = ( + hidden_size // num_attention_heads + ) * num_key_value_heads + + self.q_proj_qweight = Weight( + name="q_proj.qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.k_proj_qweight = Weight( + name="k_proj.qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.v_proj_qweight = Weight( + name="v_proj.qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + + self.q_proj_scales = Weight( + name="q_proj.scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.k_proj_scales = Weight( + name="k_proj.scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.v_proj_scales = Weight( + name="v_proj.scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + self.o_proj = linear_cls( + in_dim=hidden_size, + out_dim=hidden_size, + dtype=dtype, + # device=device, + quantization_encoding=QuantizationEncoding.GPTQ, + ) + + self.perm_idx = None + if quantization_config.desc_act: + self.perm_idx = Weight( + name="q_proj.perm_idx", + dtype=DType.int32, + shape=[hidden_size], + # device=device, + ) + + @property + def wqkv(self) -> TensorValue: + """The concatenation of q, k, and v weight vectors.""" + + # fmt: off + # the `qweight` tensor for a QuantLinear is of type uint32. When allocated as bytes, we reshape the + # uint8 tensor to [cols, rows * 4] so concatenating the uint8 tensors along axis=1 is equivalent to + # concatenating the original uint32 tensors along axis=1. + wq_qweight = ops.reshape(self.q_proj_qweight, (-1, self.hidden_size * 4)) + wk_qweight = ops.reshape(self.k_proj_qweight, (-1, self.kv_weight_dim * 4)) + wv_qweight = ops.reshape(self.v_proj_qweight, (-1, self.kv_weight_dim * 4)) + + wqkv_qweight = ops.reshape( + ops.concat((wq_qweight, wk_qweight, wv_qweight), axis=1), + (-1, self.hidden_size + 2 * self.kv_weight_dim), + ) + # `scales` tensor is in f16/bf16 type, so we reshape the uint8 tensor to [cols, rows * 2]. + wq_scales = ops.reshape(self.q_proj_scales, (-1, self.hidden_size * 2)) + wk_scales = ops.reshape(self.k_proj_scales, (-1, self.kv_weight_dim * 2)) + wv_scales = ops.reshape(self.v_proj_scales, (-1, self.kv_weight_dim * 2)) + + wqkv_scales = ops.reshape( + ops.concat((wq_scales, wk_scales, wv_scales), axis=1), + (-1, self.hidden_size + 2 * self.kv_weight_dim), + ) + # fmt: on + return ops.concat((wqkv_qweight, wqkv_scales), axis=0) + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + layer_idx = ops.constant(self.layer_idx, DType.uint32) + + # Get attributes from input. + total_seq_len = x.shape[0] + + wqkv = self.wqkv + if self.device: + wqkv = wqkv.to(self.device) + + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul_quantized( + self.kv_params, + input=x, + wqkv=wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=layer_idx, + n_heads=self.n_heads, + perm_idx=self.perm_idx, + quantization_config=self.quantization_config, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + if xq.device is not None: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype).to(xq.device) + else: + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + layer_idx, + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.o_proj(attn_out) + + +def distribute_value( + v: TensorValue, devices: List[DeviceRef] +) -> List[TensorValue]: + return [v.to(device) for device in devices] + + +@dataclass +class DistributedAttentionWithRope(DistributedAttentionImpl): + list_of_attentions: List[AttentionWithRope] + devices: list[DeviceRef] + + def __call__( + self, + x: List[TensorValue], + signal_buffers: List[BufferValue], + kv_collections: List[ + ContinuousBatchingKVCacheCollection | PagedKVCacheCollection + ], + **kwargs, + ) -> List[TensorValue]: + input_row_offsets = kwargs["input_row_offsets"] + assert isinstance(input_row_offsets, TensorValue) + input_row_offsets_ = distribute_value(input_row_offsets, self.devices) + + return list( + ops.allreduce.sum( + inputs=[ + self.list_of_attentions[i]( + x[i], + kv_collections[i], + input_row_offsets=input_row_offsets_[i], + ) + for i in range(len(self.devices)) + ], + signal_buffers=signal_buffers, + ) + ) + + +@dataclass +class AttentionWithRopeQKV(AttentionImplQKV): + # This class will not use the RotaryEmbedding to + # calculate rope, but it already includes a freqs_cis + # calculation, which we will borrow + rope: OptimizedRotaryEmbedding + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + wqkv = ops.concat((self.wq, self.wk, self.wv)) + + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + n_heads=self.n_heads, + ) + + # Apply rope. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + # Cast freqs_cis to xq's dtype to match the fused_qk_ragged_rope kernel. + freqs_cis = ops.cast(self.rope.freqs_cis, xq.dtype) + + xq = fused_qk_ragged_rope( + self.kv_params, + xq, + kwargs["input_row_offsets"], + kv_collection, + freqs_cis, + ops.constant(self.layer_idx, DType.uint32), + interleaved=self.rope.interleaved, + ) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=ops.constant(self.layer_idx, DType.uint32), + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=MHAMaskVariant.CAUSAL_MASK, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.wo(attn_out) diff --git a/src/max/pipelines/nn/attention/attention_without_mask.py b/src/max/pipelines/nn/attention/attention_without_mask.py new file mode 100644 index 0000000000..47b368fd53 --- /dev/null +++ b/src/max/pipelines/nn/attention/attention_without_mask.py @@ -0,0 +1,74 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An opaque KV Cache optimized vanilla attention mechanism, with Mask Variants provided inside the Kernel.""" + +from dataclasses import dataclass +from typing import Union + +from max.graph import TensorValue, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + PagedKVCacheCollection, +) + +from ..kernels import ( + MHAMaskVariant, + flash_attention_ragged, + fused_qkv_ragged_matmul, +) +from .interfaces import AttentionImpl + + +@dataclass +class AttentionWithoutMask(AttentionImpl): + mask_variant: MHAMaskVariant + + def __call__( + self, + x: TensorValue, + kv_collection: Union[ + ContinuousBatchingKVCacheCollection, PagedKVCacheCollection + ], + **kwargs, + ) -> TensorValue: + # Get attributes from input. + total_seq_len = x.shape[0] + + # Call into fused qkv ragged matmul. + xq = fused_qkv_ragged_matmul( + self.kv_params, + input=x, + wqkv=self.wqkv, + input_row_offsets=kwargs["input_row_offsets"], + kv_collection=kv_collection, + layer_idx=self.layer_idx, + n_heads=self.n_heads, + ) + + # Reshape for flash attention. + xq = xq.reshape((-1, self.n_heads, self.kv_params.head_dim)) + + # Calculate Flash Attention. + attn_out = flash_attention_ragged( + self.kv_params, + input=xq, + kv_collection=kv_collection, + layer_idx=self.layer_idx, + input_row_offsets=kwargs["input_row_offsets"], + mask_variant=self.mask_variant, + scale=self.scale, + ) + + attn_out = ops.reshape(attn_out, shape=[total_seq_len, -1]) + + return self.wo(attn_out) diff --git a/src/max/pipelines/nn/attention/interfaces.py b/src/max/pipelines/nn/attention/interfaces.py new file mode 100644 index 0000000000..ba0303cfb2 --- /dev/null +++ b/src/max/pipelines/nn/attention/interfaces.py @@ -0,0 +1,288 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""General interface for Attention.""" + +from __future__ import annotations + +from abc import ABC, abstractmethod +from dataclasses import dataclass + +from max.graph import ( + BufferValue, + TensorValue, + TensorValueLike, +) +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..layer import Layer, LayerV2 +from ..linear import Linear + + +@dataclass +class AttentionImpl(Layer, ABC): + """ + A generalized attention interface, that will be used upstream by a general Transformer. + We would expect a seperate subclass, articulating each variation of Attention: + + - AttentionWithRope + - AttentionWithAlibi + - VanillaAttentionWithCausalMask + - ... + + There are a series of shared attributes, however, more may be needed for each individual variant. + For example, we may introduce an OptimizedRotaryEmbedding class for the AttentionWithRope class: + + .. code-block:: python + + @dataclass + class AttentionWithRope(AttentionImpl): + rope: OptimizedRotaryEmbedding + ... + + We expect the ``__call__`` abstractmethod to remain relatively consistent, however the ``**kwargs`` + argument is exposed, allowing you to leverage additional arguments for each particular variant. + For example, we may introduce an VanillaAttentionWithCausalMask class, which includes an attention + mask: + + .. code-block:: python + + @dataclass + class VanillaAttentionWithCausalMask(AttentionImpl): + ... + + def __call__( + self, + x: TensorValueLike, + kv_collection: ContinuousBatchingKVCacheCollection, + valid_lengths: TensorValueLike, + **kwargs, + ) -> tuple[TensorValue, ContinuousBatchingKVCacheCollection]: ... + + if "attn_mask" not in kwargs: + raise ValueError("attn_mask not provided to VanillaAttentionWithCausalMask") + + # Which we can then use the attention mask downstream like so: + op( + attn_mask = kwargs["attn_mask"] + ) + """ + + n_heads: int + """The number of attention heads.""" + + kv_params: KVCacheParams + """KV Cache Params, including the number of kv heads, the head dim, and data type.""" + + layer_idx: TensorValue + """The layer number associated with this Attention block.""" + + wqkv: TensorValue + """The concatenation of q, k, and v weight vectors.""" + + wo: Linear + """A linear layer for the output projection.""" + + scale: float + """The scale factor for the attention.""" + + def __post_init__(self) -> None: + assert self.scale is not None, "scale must be provided to AttentionImpl" + + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + @abstractmethod + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: ... + + +class AttentionImplV2(LayerV2, ABC): + """A generalized attention interface, that will be used upstream by a general Transformer. + We would expect a separate subclass, articulating each variation of Attention: + + - AttentionWithRope + - AttentionWithAlibi + - VanillaAttentionWithCausalMask + - ... + + `AttentionImplV2` will replace `AttentionImpl` as we roll out changes to the + Layer API. + + There are a series of shared attributes, however, more may be needed for each individual variant. + For example, we may introduce an OptimizedRotaryEmbedding class for the AttentionWithRope class: + + .. code-block:: python + + @dataclass + class AttentionWithRope(AttentionImplV2): + rope: OptimizedRotaryEmbedding + ... + + We expect the ``__call__`` abstractmethod to remain relatively consistent, however the ``**kwargs`` + argument is exposed, allowing you to leverage additional arguments for each particular variant. + For example, we may introduce an VanillaAttentionWithCausalMask class, which includes an attention + mask: + + .. code-block:: python + + class VanillaAttentionWithCausalMask(AttentionImplV2): + ... + + def __call__( + self, + x: TensorValueLike, + kv_collection: ContinuousBatchingKVCacheCollection, + **kwargs, + ) -> tuple[TensorValue, ContinuousBatchingKVCacheCollection]: ... + + if "attn_mask" not in kwargs: + raise ValueError("attn_mask not provided to VanillaAttentionWithCausalMask") + + # Which we can then use the attention mask downstream like so: + op( + attn_mask = kwargs["attn_mask"] + ) + """ + + @abstractmethod + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: ... + + +@dataclass +class DistributedAttentionImpl(Layer, ABC): + """ + A generalized Distributed attention interface. + """ + + @abstractmethod + def __call__( + self, + x: list[TensorValue], + signal_buffers: list[BufferValue], + kv_collections: list[ + ContinuousBatchingKVCacheCollection | PagedKVCacheCollection + ], + **kwargs, + ) -> list[TensorValue]: ... + + +@dataclass +class AttentionImplQKV(Layer, ABC): + """ + A generalized attention interface, that will be used upstream by a general Transformer. + We would expect a seperate subclass, articulating each variation of Attention: + + - AttentionWithRope + - AttentionWithAlibi + - VanillaAttentionWithCausalMask + - ... + + There are a series of shared attributes, however, more may be needed for each individual variant. + For example, we may introduce an OptimizedRotaryEmbedding class for the AttentionWithRope class: + + .. code-block:: python + + @dataclass + class AttentionWithRope(AttentionImpl): + rope: OptimizedRotaryEmbedding + ... + + We expect the ``__call__`` abstractmethod to remain relatively consistent, however the ``**kwargs`` + argument is exposed, allowing you to leverage additional arguments for each particular variant. + For example, we may introduce an VanillaAttentionWithCausalMask class, which includes an attention + mask: + + .. code-block:: python + + @dataclass + class VanillaAttentionWithCausalMask(AttentionImpl): + ... + + def __call__( + self, + x: TensorValueLike, + kv_collection: ContinuousBatchingKVCacheCollection, + valid_lengths: TensorValueLike, + **kwargs, + ) -> tuple[TensorValue, ContinuousBatchingKVCacheCollection]: ... + + if "attn_mask" not in kwargs: + raise ValueError("attn_mask not provided to VanillaAttentionWithCausalMask") + + # Which we can then use the attention mask downstream like so: + op( + attn_mask = kwargs["attn_mask"] + ) + """ + + n_heads: int + """The number of attention heads.""" + + kv_params: KVCacheParams + """KV Cache Params, including the number of kv heads, the head dim, and data type.""" + + layer_idx: int + """The layer number associated with this Attention block.""" + + wq: TensorValueLike + """The q weight vector.""" + + wk: TensorValueLike + """The k weight vector.""" + + wv: TensorValueLike + """The v weight vector.""" + + wo: Linear + """A linear layer for the output projection.""" + + scale: float + """The scale factor for the attention.""" + + def __post_init__(self) -> None: + assert self.scale is not None, ( + "scale must be provided to AttentionImplQKV" + ) + + if not self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + @abstractmethod + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: ... diff --git a/src/max/pipelines/nn/attention/naive_attention_with_rope.py b/src/max/pipelines/nn/attention/naive_attention_with_rope.py new file mode 100644 index 0000000000..8900378460 --- /dev/null +++ b/src/max/pipelines/nn/attention/naive_attention_with_rope.py @@ -0,0 +1,206 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""An attention layer, using only native max graph operations, the naive cache, and ROPE.""" + +from __future__ import annotations + +import math + +from max.dtype import DType +from max.graph import BufferValue, TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import KVCacheParams + +from ..layer import LayerV2 +from ..linear import Linear, LinearV2 +from ..rotary_embedding import RotaryEmbedding + + +class NaiveAttentionWithRope(LayerV2): + def __init__( + self, + n_heads: int, + kv_params: KVCacheParams, + dim: int, + wq: Linear | LinearV2, + wk: Linear | LinearV2, + wv: Linear | LinearV2, + wo: Linear | LinearV2, + rope: RotaryEmbedding, + scale: float | None = None, + ): + super().__init__() + self.n_heads = n_heads + self.kv_params = kv_params + self.dim = dim + self.q_proj = wq + self.k_proj = wk + self.v_proj = wv + self.o_proj = wo + self.rope = rope + self.scale = ( + scale if scale else math.sqrt(1.0 / self.kv_params.head_dim) + ) + + if self.kv_params.cache_strategy.uses_opaque(): + raise ValueError( + f"{self.kv_params.cache_strategy} cache strategy, not supported" + " in Attention layer." + ) + + def repeat_kv(self, kv: TensorValue) -> TensorValue: + """Repeats key/value tensors to match the number of query heads.""" + batch = kv.shape[0] + kv = ops.reshape( + kv, + [batch, -1, self.kv_params.n_kv_heads, 1, self.kv_params.head_dim], + ) + + kv = ops.tile( + kv, [1, 1, 1, self.n_heads // self.kv_params.n_kv_heads, 1] + ) + return ops.reshape( + kv, [batch, -1, self.n_heads, self.kv_params.head_dim] + ) + + def attention( + self, + xq: TensorValueLike, + xk: TensorValueLike, + xv: TensorValueLike, + attn_mask: TensorValueLike, + keys: TensorValueLike, + values: TensorValueLike, + ) -> TensorValue: + xq = TensorValue(xq) + xk = TensorValue(xk) + xv = TensorValue(xv) + attn_mask = TensorValue(attn_mask) + keys = TensorValue(keys) + values = TensorValue(values) + + # Broadcast the attention mask across heads. + # Do so in the graph so that the broadcast can be fused downstream ops. + batch, seq_len, post_seq_len = attn_mask.shape + attn_mask = attn_mask.reshape( + (batch, 1, seq_len, post_seq_len) + ).broadcast_to((batch, self.n_heads, seq_len, post_seq_len)) + + keys = keys.transpose(0, 1) + values = values.transpose(0, 1) + + keys = self.repeat_kv(keys) + values = self.repeat_kv(values) + + xq = xq.transpose(1, 2) + keys = keys.transpose(1, 2) + values = values.transpose(1, 2) + + scores = xq @ ops.transpose(keys, 2, 3) + # Note, the graph compiler currently requires the order of operands + # to be `scores * scale` in order to pattern match the fused attention + # operator. + return ( + ops.softmax( + scores * ops.constant(self.scale, dtype=DType.float32) + + attn_mask + ) + @ values + ) + + def __call__( + self, + x: TensorValueLike, + attention_mask: TensorValueLike, + k_cache: BufferValue, + v_cache: BufferValue, + start_pos: TensorValue, + layer_index: int, + ) -> TensorValue: + """Computes attention on x, reusing the KV cache. + + Args: + x: Activations with shape (batch, seq_len, dim). + k_cache: The full keys cache buffer with shape + (max_seq_len, n_layers, max_batch, n_kv_heads, head_dim). + v_cache: The full values cache buffer with shape + (max_seq_len, n_layers, max_batch, n_kv_heads, head_dim). + start_pos: Scalar of the current position in the kv_cache. + + Returns the result of multi-headed self attention on the input. + """ + x = TensorValue(x) + batch, seq_len = x.shape[0], x.shape[1] + + xq = self.q_proj(x) + xk = self.k_proj(x) + xv = self.v_proj(x) + + xq = ops.reshape( + xq, [batch, seq_len, self.n_heads, self.kv_params.head_dim] + ) + + xk = ops.reshape( + xk, + [ + batch, + seq_len, + self.kv_params.n_kv_heads, + self.kv_params.head_dim, + ], + ) + xv = ops.reshape( + xv, + [ + batch, + seq_len, + self.kv_params.n_kv_heads, + self.kv_params.head_dim, + ], + ) + + xq = self.rope(xq, start_pos, seq_len) + xk = self.rope(xk, start_pos, seq_len) + + # Write xk and xv back the to cache at start_pos. + # The cache can have a larger max batch size than the current input. + # We slice down to the active batch size. + # cache[start_pos:start_pos+seq_len, layer_index, :batch] = ... + seq_len_val = TensorValue(seq_len) + slice_seq_len = (slice(start_pos, start_pos + seq_len_val), seq_len) + batch_val = TensorValue(batch) + slice_batch = (slice(0, batch_val), batch) + k_cache[slice_seq_len, layer_index, slice_batch] = xk.transpose( + 0, 1 + ).cast(k_cache.dtype) + v_cache[slice_seq_len, layer_index, slice_batch] = xv.transpose( + 0, 1 + ).cast(k_cache.dtype) + + # Then slice the correct keys and values for attention. + # The cache can have a larger max batch size than the current input. + # We slice down to the active batch size. + # ... = cache[0:start_pos+seq_len, layer_index, :batch] + slice_post_seq_len = (slice(0, start_pos + seq_len_val), "post_seq_len") + keys = k_cache[slice_post_seq_len, layer_index, slice_batch].cast( + xq.dtype + ) + values = v_cache[slice_post_seq_len, layer_index, slice_batch].cast( + xq.dtype + ) + + output = ( + self.attention(xq, xk, xv, attention_mask, keys, values) + .transpose(1, 2) + .reshape([batch, seq_len, -1]) + ) + return self.o_proj(output) diff --git a/src/max/pipelines/nn/clamp.py b/src/max/pipelines/nn/clamp.py new file mode 100644 index 0000000000..86404eb314 --- /dev/null +++ b/src/max/pipelines/nn/clamp.py @@ -0,0 +1,22 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max.graph import TensorValue, ops + + +def clamp(x: TensorValue, min: float, max: float) -> TensorValue: + """Clamps values in `x` to `[min, max]`""" + return ops.min( + ops.max(x, ops.constant(min, x.dtype)), + ops.constant(max, x.dtype), + ) diff --git a/src/max/pipelines/nn/comm/__init__.py b/src/max/pipelines/nn/comm/__init__.py new file mode 100644 index 0000000000..92288c849d --- /dev/null +++ b/src/max/pipelines/nn/comm/__init__.py @@ -0,0 +1,18 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .allreduce import Signals + +__all__ = [ + "Signals", +] diff --git a/src/max/pipelines/nn/comm/allreduce.py b/src/max/pipelines/nn/comm/allreduce.py new file mode 100644 index 0000000000..40d7838049 --- /dev/null +++ b/src/max/pipelines/nn/comm/allreduce.py @@ -0,0 +1,69 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Allreduce module definitions.""" + +from collections.abc import Iterable + +from max.driver import Accelerator, Tensor +from max.dtype import DType +from max.graph import BufferType, DeviceKind, DeviceRef + + +class Signals: + """Signal buffers used for peer-to-peer communication in allreduce. + + Device code uses these buffers by enabling peer-to-peer access. + Then thread blocks use the buffers to implement barriers for + synchronization, and to hold intermediate communication results. + """ + + NUM_BYTES = (1 + 128) * 1024 * 1024 + """The size of the signal buffers used for communication in allreduce.""" + # NOTE: ``NUM_BYTES`` must stay in sync with the size of the ``Signal`` + # Mojo struct + the size of the intermediate buffer for communication. + + devices: list[DeviceRef] + """List of graph devices that these signals communicate between.""" + + def __init__(self, devices: Iterable[DeviceRef]) -> None: + """ + Args: + num_gpus: Number of GPUs involved in the allreduce. + """ + # Convert the iterable to a list since we iterate over it twice. + devices = list(devices) + if not all(dev.device_type == DeviceKind.GPU for dev in devices): + msg = "peer-to-peer signals should be constructed for accelerators" + raise TypeError(msg) + + self.devices = devices + + def buffers(self) -> list[Tensor]: + """Allocates and returns buffers used for communication in allreduce.""" + return [ + Tensor.zeros( + shape=(Signals.NUM_BYTES,), + dtype=DType.uint8, + device=Accelerator(id=dev.id), + ) + for dev in self.devices + ] + + def input_types(self) -> list[BufferType]: + """Gets graph input types corresponding to these signal buffers.""" + return [ + BufferType( + dtype=DType.uint8, shape=(Signals.NUM_BYTES,), device=dev + ) + for dev in self.devices + ] diff --git a/src/max/pipelines/nn/compute_log_probabilities.py b/src/max/pipelines/nn/compute_log_probabilities.py new file mode 100644 index 0000000000..150ae74479 --- /dev/null +++ b/src/max/pipelines/nn/compute_log_probabilities.py @@ -0,0 +1,132 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Callable + +import numpy as np +from max.pipelines import LogProbabilities + + +def log_softmax(x: np.ndarray, axis: int = -1) -> np.ndarray: + """Compute the logarithm of the softmax function. + + This implementation uses the identity log(softmax(x)) = x - log(sum(exp(x))) + with numerical stability improvements to prevent overflow/underflow. + + Args: + x: Input array + axis: Axis to compute values along + + Returns: + Array with same shape as x, representing log(softmax(x)) + """ + # Subtract max value for numerical stability (prevents exp overflow) + x_max = np.amax(x, axis=axis, keepdims=True) + + # Compute exp(x - x_max) which is now safe from overflow + shifted_x = x - x_max + exp_shifted = np.exp(shifted_x) + + # Suppress -inf warnings from log(0) + # This can happen when input contains extreme negative values (-inf), + # which become 0 after exp() operation + with np.errstate(divide="ignore"): + sum_exp = np.sum(exp_shifted, axis=axis, keepdims=True) + log_sum_exp = np.log(sum_exp) + + # Final result: x - x_max - log(sum(exp(x - x_max))) + # This is mathematically equivalent to log(softmax(x)) + return shifted_x - log_sum_exp + + +def compute_log_probabilities( + get_logits_and_samples: Callable[ + [int, bool], (tuple[np.ndarray, np.ndarray] | None) + ], + batch_top_n: list[int], + batch_echo: list[bool], +) -> list[LogProbabilities | None]: + """Computes the log probabilities. + + Args: + get_logits_and_samples: Callable that takes the batch index and an + `echo` bool and returns the logits and sampled tokens for that batch. + Args: + - batch_index is an int between [0, batch_size) + - echo is whether that item was requested to echo the input tokens. + Returns (None if batch item is empty): + - Logits should have shape = (n_tokens, vocab_size). + - Sampled tokens should have shape = (n_tokens). + batch_top_n: Number of top log probabilities to return per input in + the batch. For any element where `top_n == 0`, the + LogProbabilities is skipped. + batch_echo: Whether to include input tokens in the returned log + probabilities. + + Returns: + Computed log probabilities for each item in the batch. + """ + log_probabilities: list[LogProbabilities | None] = [] + for batch, (top_n, echo) in enumerate(zip(batch_top_n, batch_echo)): + if top_n == 0: + log_probabilities.append(None) + continue + + logits_and_samples = get_logits_and_samples(batch, echo) + if not logits_and_samples: + log_probabilities.append(None) + continue + + logits, samples = logits_and_samples + log_probs = log_softmax(logits, axis=-1) + + # Get top n tokens. + top_n_indices = np.argpartition(log_probs, -top_n, axis=-1)[ + ..., -top_n: + ] + + # Get the log probabilities of each sampled token. + sampled_log_probs = np.take_along_axis( + log_probs, samples.reshape(-1, 1), axis=1 + ).reshape(-1) + + # Store the stats for each sample token. + num_tokens = log_probs.shape[0] + token_log_probabilities = [] + top_log_probabilities = [] + for i in range(num_tokens): + token_log_probabilities.append(sampled_log_probs[i].item()) + + # Compute top n log probs. + top_tokens = {} + for n in range(top_n): + top_token = top_n_indices[i][n] + top_token_logits = log_probs[i][top_token] + top_tokens[top_token] = top_token_logits.item() + + # Include sampled token in the top tokens. + sampled_token = samples[i].item() + top_tokens[sampled_token] = sampled_log_probs[i].item() + + top_log_probabilities.append(top_tokens) + + log_probabilities.append( + LogProbabilities( + token_log_probabilities=token_log_probabilities, + top_log_probabilities=top_log_probabilities, + ) + ) + + return log_probabilities diff --git a/src/max/pipelines/nn/conv.py b/src/max/pipelines/nn/conv.py new file mode 100644 index 0000000000..b7cda54f3e --- /dev/null +++ b/src/max/pipelines/nn/conv.py @@ -0,0 +1,177 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from dataclasses import dataclass +from typing import Optional, Tuple, Union + +from max.graph import TensorValue, TensorValueLike, Weight, ops + +from .layer import Layer + + +@dataclass +class Conv2D(Layer): + """A 2D convolution over an input signal composed of several input + planes. + """ + + filter: TensorValueLike + bias: Optional[TensorValueLike] = None + + stride: Union[int, Tuple[int, int]] = (1, 1) + padding: Union[int, Tuple[int, int, int, int]] = (0, 0, 0, 0) + dilation: Union[int, Tuple[int, int]] = (1, 1) + groups: int = 1 + + def __call__(self, x: TensorValue) -> TensorValue: + # These need to be casted as the underlying ops.conv2d call + # expects them to only be tuple types. + if isinstance(self.stride, int): + self.stride = (self.stride, self.stride) + + if isinstance(self.padding, int): + self.padding = ( + self.padding, + self.padding, + self.padding, + self.padding, + ) + + if isinstance(self.dilation, int): + self.dilation = (self.dilation, self.dilation) + + if ( + isinstance(self.filter, Weight) + and self.filter.quantization_encoding is not None + ): + raise ValueError("Conv1D not implemented with weight quantization.") + return ops.conv2d( + x, + self.filter, + self.stride, + self.dilation, + self.padding, + self.groups, + self.bias, + ) + + +@dataclass +class Conv1D(Layer): + """A 1D convolution over an input signal composed of several input + planes. + """ + + filter: TensorValueLike # [kernel_size, in_channels, out_channels] + bias: Optional[TensorValueLike] = None + + stride: int = 1 + padding: int = 0 + dilation: int = 1 + groups: int = 1 + + def __call__(self, x: TensorValueLike) -> TensorValue: + """ + Args: + x: a tensor of shape [batch_size, length, in_channels] + + Returns: + a tensor of shape [batch_size, new_length, out_channels] + new_length = ((length + 2 * padding - (kernel_size - 1) - 1) / stride) + 1 + """ + # TODO(GEX-327): Support Conv1D in mo rather than implementing it using Conv2D. + # Reshape [batch_size, length, in_channels] to [batch_size, height=1, length, in_channels]. + x = ops.unsqueeze(x, 1) + # Reshape [kernel_size, in_channels, out_channels] to [height=1, kernel_size, in_channels, out_channels]. + filter = ops.unsqueeze(self.filter, 0) + if ( + isinstance(self.filter, Weight) + and self.filter.quantization_encoding is not None + ): + raise ValueError("Conv1D not implemented with weight quantization.") + else: + output = ops.conv2d( + x, + filter, + (1, self.stride), + (1, self.dilation), + (0, 0, self.padding, self.padding), + self.groups, + self.bias, + ) + # Reshape [batch_size, height=1, new_length, out_channels] to [batch_size, new_length, out_channels]. + return ops.squeeze(output, 1) + + +@dataclass +class Conv3D(Layer): + """A 3D convolution over an input signal composed of several input + planes. + """ + + filter: TensorValueLike # [depth, height, width, in_channels / num_groups, out_channels] + bias: Optional[TensorValueLike] = None # [out_channels] + + stride: Union[int, Tuple[int, int, int]] = (1, 1, 1) + padding: Union[int, Tuple[int, int, int, int, int, int]] = ( + 0, + 0, + 0, + 0, + 0, + 0, + ) + dilation: Union[int, Tuple[int, int, int]] = (1, 1, 1) + groups: int = 1 + + def __call__(self, x: TensorValueLike) -> TensorValue: + """ + Args: + x: a tensor of shape [batch_size, length, in_channels] + + Returns: + a tensor of shape [batch_size, new_length, out_channels] + new_length = ((length + 2 * padding - (kernel_size - 1) - 1) / stride) + 1 + """ + # These need to be casted as the underlying ops.conv2d call + # expects them to only be tuple types. + if isinstance(self.stride, int): + self.stride = (self.stride, self.stride, self.stride) + + if isinstance(self.padding, int): + self.padding = ( + self.padding, + self.padding, + self.padding, + self.padding, + self.padding, + self.padding, + ) + + if isinstance(self.dilation, int): + self.dilation = (self.dilation, self.dilation, self.dilation) + + if ( + isinstance(self.filter, Weight) + and self.filter.quantization_encoding is not None + ): + raise ValueError("Conv3D not implemented with weight quantization.") + return ops.conv3d( + x, + self.filter, + self.stride, + self.dilation, + self.padding, + self.groups, + self.bias, + ) diff --git a/src/max/pipelines/nn/embedding.py b/src/max/pipelines/nn/embedding.py new file mode 100644 index 0000000000..fceaa845d3 --- /dev/null +++ b/src/max/pipelines/nn/embedding.py @@ -0,0 +1,255 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import math +from dataclasses import dataclass +from typing import Optional + +from max.dtype import DType +from max.graph import ( + BufferValue, + DeviceRef, + TensorValue, + TensorValueLike, + Weight, + ops, +) +from max.graph.quantization import QuantizationEncoding + +from .layer import Layer, LayerV2 + + +@dataclass +class Embedding(Layer): + weights: TensorValueLike + + def __call__(self, indices: TensorValueLike) -> TensorValue: + result = ops.gather(self.weights, indices, axis=0) + if ( + isinstance(self.weights, Weight) + and self.weights.quantization_encoding is not None + ): + result = ops.dequantize(self.weights.quantization_encoding, result) + return result + + +class EmbeddingV2(LayerV2): + """ + A lookup table for embedding integer indices into dense vectors. + + This layer maps each integer index to a dense vector of fixed size. + Embedding weights are stored on the CPU but are moved to the specified + device during the model init phase. + + Example: + + .. code-block:: python + + embedding_layer = EmbeddingV2( + vocab_size=1000, + hidden_dim=256, + dtype=DType.float32, + device=DeviceRef.GPU(), + name="embeddings", + ) + + # Token indices of shape: [batch, ..., num_indices]. + token_indices: TensorValueLike + embeddings = embedding_layer(token_indices) + """ + + weight: Weight + """The embedding weight matrix stored on the CPU. + Model init moves weights to the device specified in :obj:`device`.""" + + device: DeviceRef | None + """The device on which embedding lookup is performed.""" + + def __init__( + self, + vocab_size: int, + hidden_dim: int, + dtype: DType, + device: DeviceRef | None = None, + quantization_encoding: Optional[QuantizationEncoding] = None, + name: Optional[str] = None, + ) -> None: + """Initializes the embedding layer with the given arguments. + + Args: + vocab_size: The number of unique items in the vocabulary. + Indices must be in the range ``[0, vocab_size)``. + hidden_dim: The dimensionality of each embedding vector. + dtype: The data type of the embedding weights. + device: The device where embedding lookups are executed. + Model init transfers the initially CPU-resident weights to this + device. + name: The name identifier for the embedding weight matrix. + """ + super().__init__() + + self.device = device + self.weight = Weight( + name or "weight", + dtype, + shape=(vocab_size, hidden_dim), + device=DeviceRef.CPU() if self.device else None, + quantization_encoding=quantization_encoding, + ) + + def __call__(self, indices: TensorValueLike) -> TensorValue: + """Embeds the input indices by looking up corresponding vectors. + + Args: + indices: A tensor of integer indices to look up. + Each index must be in the range ``[0, vocab_size)``. + + Returns: + A tensor containing the embeddings corresponding to the input + indices. + The result resides on the device specified in :obj:`device`. + """ + weight = self.weight.to(self.device) if self.device else self.weight + result = ops.gather( + TensorValue(weight), + indices, + axis=0, + ) + if self.weight.quantization_encoding is not None: + result = ops.dequantize(self.weight.quantization_encoding, result) + return result + + +class VocabParallelEmbedding(LayerV2): + """ + A lookup table for embedding integer indices into dense vectors. + + This layer works like `nn.Embedding` except the embedding table is sharded + on the vocabulary dimension across all devices. + + Example: + + .. code-block:: python + + embedding_layer = VocabParallelEmbedding( + vocab_size=1000, + hidden_dim=256, + dtype=DType.float32, + device=[DeviceRef.GPU(0), DeviceRef.GPU(1)], + name="embeddings", + ) + + # Token indices of shape: [batch, ..., num_indices]. + token_indices: TensorValueLike + embeddings = embedding_layer(token_indices) + """ + + def __init__( + self, + vocab_size: int, + hidden_dim: int, + dtype: DType, + devices: list[DeviceRef], + quantization_encoding: Optional[QuantizationEncoding] = None, + name: Optional[str] = None, + ): + """ + Args: + vocab_size: The number of unique items in the vocabulary. + Indices must be in the range ``[0, vocab_size)``. + hidden_dim: The dimensionality of each embedding vector. + dtype: The data type of the embedding weights. + devices: The devices where embedding lookups are executed. + Model init transfers the initially CPU-resident weights to this + device. + name: The name identifier for the embedding weight matrix. + """ + super().__init__() + self.vocab_size = vocab_size + self.devices = devices + + self.num_devices = len(self.devices) + self.shard_size = math.ceil(self.vocab_size / self.num_devices) + + # The weight is loaded in with a single op, then copied to each device + # in __call__. + self.weight = Weight( + name or "weight", + dtype, + shape=(vocab_size, hidden_dim), + device=DeviceRef.CPU(), + quantization_encoding=quantization_encoding, + ) + + def __call__( + self, indices: TensorValueLike, signal_buffers: list[BufferValue] + ) -> list[TensorValue]: + """Embeds the input indices by looking up corresponding vectors. + + Args: + indices: A tensor of integer indices to look up. + Each index must be in the range ``[0, vocab_size)``. + + Returns: + A tensor containing the embeddings corresponding to the input + indices. + The result resides on the device specified in :obj:`device`. + """ + # Shard the weight onto each device. + input = TensorValue(indices) + outputs = [ + self._per_device_call(input, n) for n in range(self.num_devices) + ] + return ops.allreduce.sum(outputs, signal_buffers) + + def _per_device_call( + self, indices: TensorValue, device_idx: int + ) -> TensorValue: + """Computes the embeddings for the input indices, for a single device.""" + # Copy a shard from the embedding weights onto the device. + device = self.devices[device_idx] + vocab_start_index = self.shard_size * device_idx + vocab_end_index = min( + self.shard_size * (device_idx + 1), self.vocab_size + ) + embedding_shard = self.weight[vocab_start_index:vocab_end_index].to( + device + ) + + indices = indices.to(device) + # Process indices so that all tokens are between 0 and the shard size. + + # Set up mask so that the 1=tokens within range, 0=tokens out of range. + input_mask = ops.logical_and( + indices >= vocab_start_index, indices < vocab_end_index + ) + + # Tokens that are out of this range are masked out. + indices -= vocab_start_index + + # Apply mask to avoid searching for out-of-bound tokens + indices *= input_mask + + result = ops.gather( + embedding_shard, + indices, + axis=0, + ) + if self.weight.quantization_encoding is not None: + result = ops.dequantize(self.weight.quantization_encoding, result) + result *= ops.cast( + ops.unsqueeze(input_mask, 1), result.dtype + ) # Apply input mask again + return result diff --git a/src/max/pipelines/nn/hooks/__init__.py b/src/max/pipelines/nn/hooks/__init__.py new file mode 100644 index 0000000000..b39c9375e4 --- /dev/null +++ b/src/max/pipelines/nn/hooks/__init__.py @@ -0,0 +1,20 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .print_hook import PrintHook +from .torch_print_hook import TorchPrintHook + +__all__ = [ + "PrintHook", + "TorchPrintHook", +] diff --git a/src/max/pipelines/nn/hooks/base_print_hook.py b/src/max/pipelines/nn/hooks/base_print_hook.py new file mode 100644 index 0000000000..4241cd88bb --- /dev/null +++ b/src/max/pipelines/nn/hooks/base_print_hook.py @@ -0,0 +1,159 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import dataclasses +import os +from abc import ABC, abstractmethod +from collections import Counter +from dataclasses import dataclass +from typing import Any + +from max.pipelines.nn._identity import IdentityMap + + +@dataclass +class LayerInfo: + layer_name: str + call_count: int = 0 + + +class BasePrintHook(ABC): + """Base hook for printing values. + + This class defines a `__call__` method that prints the inputs and outputs. + Only layers that have been saved with `hook.add_layer` will be printed. + + Abstract methods: + - print_value(name, value) -> bool: Override this method to print the value, + and return whether the print was successful. + + Properties: + - export_path: The base path to write values into (can be None). The full + exported path is "{export_path}/{step}". + + Methods: + - __call__(layer, args, kwargs, outputs): Calls `self.print_value`. + - add_layer(layer, name): Stores the name of a layer. + - step(): Can be called to increment the step and update the export path. + - remove(): To be used to remove the hook and run some cleanup steps. + - summarize(): Summarize the total number of tensors printed at each step. + """ + + def __init__(self, export_path: str | None = None): + self._known_layers = IdentityMap() # Maps layer -> LayerInfo + self._export_path = export_path + self._current_step = 0 + # Keep a counter for creating unique layer names. + self._layer_counter: dict[str, int] = Counter() + + # Maps step number -> [list of printed tensors] + self._recorded_prints: dict[int, list[str]] = {} + + def add_layer(self, layer, name): + self._known_layers[layer] = LayerInfo(name) + + @property + def export_path(self) -> str | None: + if self._export_path is None: + return None + return os.path.join(self._export_path, str(self._current_step)) + + def step(self): + self._current_step += 1 + + # Update export path. + if export_path := self.export_path: + os.makedirs(export_path, exist_ok=True) + + # Reset layer call counts. + for info in self._known_layers.values(): + info.call_count = 0 + + def __call__(self, layer, args, kwargs, outputs): + """Print all TensorValues.""" + if layer not in self._known_layers: + # If layer is not yet named, use the class name. + layer_cls = type(layer).__name__ + self._layer_counter[layer_cls] += 1 + layer_name = layer_cls + if self._layer_counter[layer_cls] > 1: + layer_name = f"{layer_name}{self._layer_counter[layer_cls]}" + self._known_layers[layer] = LayerInfo(layer_name) + + # Update call count and get layer name. + info = self._known_layers[layer] + info.call_count += 1 + if info.call_count > 1: + debug_name = f"{info.layer_name}({info.call_count})" + else: + debug_name = info.layer_name + + # Print input args and kwargs + for n, arg in enumerate(args): + self.print_and_record(f"{debug_name}-input_{n}", arg) + for key, value in kwargs.items(): + self.print_and_record(f"{debug_name}-input_{key}", value) + + # Print outputs. + if self.print_and_record(f"{debug_name}-output", outputs): + pass + elif isinstance(outputs, (list, tuple)): + for n, out in enumerate(outputs): + self.print_and_record(f"{debug_name}-output_{n}", out) + elif dataclasses.is_dataclass(outputs): + for field in dataclasses.fields(outputs): + self.print_and_record( + f"{debug_name}-output_{field.name}", + getattr(outputs, field.name), + ) + else: + print( + f"Was not able to write outputs from {debug_name} (output type" + f" was {type(outputs)})" + ) + + def print_and_record(self, name: str, value: Any) -> bool: + """Runs self.print_value and records the tensor if printed.""" + print_success = self.print_value(name, value) + if print_success: + if self._current_step not in self._recorded_prints: + self._recorded_prints[self._current_step] = [] + self._recorded_prints[self._current_step].append(name) + return print_success + + @abstractmethod + def print_value(self, name: str, value: Any) -> bool: + """Prints a value, and returns whether the print is successful.""" + raise NotImplementedError + + def summarize(self): + action = "Printed" + if self.export_path: + action = "Saved" + + tensors_printed = False + for step, tensors in self._recorded_prints.items(): + print(f"{action} {len(tensors)} tensors for step {step}.") + tensors_printed = tensors_printed or bool(len(tensors)) + + if not tensors_printed: + print("No tensors exported.") + elif self._export_path: + print(f"Tensors exported to {self._export_path}") + + def remove(self): + # Clean up export_path if it's empty. + if (export_path := self.export_path) and not os.listdir(export_path): + os.rmdir(export_path) diff --git a/src/max/pipelines/nn/hooks/identity.py b/src/max/pipelines/nn/hooks/identity.py new file mode 100644 index 0000000000..eeb038c45a --- /dev/null +++ b/src/max/pipelines/nn/hooks/identity.py @@ -0,0 +1,71 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Utility classes for using objects as keys in data structures.""" + +from collections.abc import MutableMapping, MutableSet + + +# From https://stackoverflow.com/questions/16994307/identityset-in-python +class IdentitySet(MutableSet): + """Set that uses object `id` as keys to support unhashable types.""" + + def __init__(self, iterable=()): + self.map = {} # id -> object + self |= iterable # add elements from iterable to the set (union) + + def __len__(self): + return len(self.map) + + def __iter__(self): + return iter(self.map.values()) + + def __contains__(self, x): + return id(x) in self.map + + def add(self, value): + """Add an element.""" + self.map[id(value)] = value + + def discard(self, value): + """Remove an element. Do not raise an exception if absent.""" + self.map.pop(id(value), None) + + def __repr__(self): + if not self: + return "%s()" % (self.__class__.__name__,) + return "%s(%r)" % (self.__class__.__name__, list(self)) + + +class IdentityMap(MutableMapping): + """Map that uses object `id` as keys to support unhashable types.""" + + def __init__(self): + self.key_map = {} # id -> object + self.value_map = {} # id -> Value + + def __getitem__(self, key): + return self.value_map[id(key)] + + def __setitem__(self, key, value): + self.key_map[id(key)] = key + self.value_map[id(key)] = value + + def __delitem__(self, key): + del self.key_map[id(key)] + del self.value_map[id(key)] + + def __iter__(self): + return iter(self.key_map.values()) + + def __len__(self): + return len(self.key_map) diff --git a/src/max/pipelines/nn/hooks/print_hook.py b/src/max/pipelines/nn/hooks/print_hook.py new file mode 100644 index 0000000000..845a6c0c3a --- /dev/null +++ b/src/max/pipelines/nn/hooks/print_hook.py @@ -0,0 +1,91 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Print hook for MAX Pipeline models.""" + +from __future__ import annotations + +import logging +import os +from collections import deque +from typing import Any, Optional, Tuple + +from max.graph import TensorValue +from max.pipelines.nn._identity import IdentitySet +from max.pipelines.nn.layer import Layer, add_layer_hook, clear_hooks + +from .base_print_hook import BasePrintHook + +logger = logging.getLogger("max.pipelines") + + +class PrintHook(BasePrintHook): + """Hook that prints/saves layer tensor inputs and outputs. + + This class must be initialized added before the graph is built so the + print ops can be added to the graph. + """ + + def __init__(self, export_path: Optional[str] = None): + super().__init__(export_path=export_path) + add_layer_hook(self) + if export_path is not None: + logger.warning( + "Export path is currently not supported. Values will be printed" + " to stdout with COMPACT format." + ) + + def name_layers(self, model: Layer): + """Create names for all layers in the model based on nested attributes.""" + for layer, name in _walk_layers(model): + self.add_layer(layer, name) + + @property + def export_path(self) -> Optional[str]: + if self._export_path is None: + return None + return os.path.join(self._export_path, str(self._current_step)) + + def print_value(self, name: str, value: Any) -> bool: + if isinstance(value, TensorValue): + value.print(name) + return True + return False + + def remove(self): + super().remove() + clear_hooks() # TODO: Add individual hook remover. + + def __del__(self): + self.summarize() + + +_SUPPORTED_TYPES = (Layer, list, tuple) + + +def _walk_layers(model): + """Walks through model and yields all layers with generated names.""" + seen = IdentitySet() + seen.add(model) + queue: deque[Tuple[Any, str]] = deque([(model, "model")]) + + while queue: + obj, name = queue.popleft() + if isinstance(obj, Layer): + yield obj, name + for k, v in obj.__dict__.items(): + if v not in seen or isinstance(v, _SUPPORTED_TYPES): + queue.append((v, f"{name}.{k}")) + elif isinstance(obj, (list, tuple)): + for n, v in enumerate(obj): + if v not in seen or isinstance(v, _SUPPORTED_TYPES): + queue.append((v, f"{name}.{n}")) diff --git a/src/max/pipelines/nn/hooks/torch_print_hook.py b/src/max/pipelines/nn/hooks/torch_print_hook.py new file mode 100644 index 0000000000..1decc2677c --- /dev/null +++ b/src/max/pipelines/nn/hooks/torch_print_hook.py @@ -0,0 +1,69 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Print hook for torch models.""" + +from __future__ import annotations + +import os +from typing import Any + +import torch + +from .base_print_hook import BasePrintHook + + +class TorchPrintHook(BasePrintHook): + """A torch-compatible print hook.""" + + _handle: torch.utils.hooks.RemovableHandle + """A handle used to remove the forward hook registered by this class.""" + + def __init__(self, export_path: str | None = None): + super().__init__(export_path) + self._handle = torch.nn.modules.module.register_module_forward_hook( + self + ) + + if export_path := self.export_path: + os.makedirs(export_path, exist_ok=True) + + def name_layers(self, model: torch.nn.Module): + """Create names for all layers in the model.""" + for module_name, module in model.named_modules(): + name = f"model.{module_name}" if module_name else "model" + self.add_layer(module, name) + + @property + def export_path(self) -> str | None: + if self._export_path is None: + return None + return os.path.join(self._export_path, str(self._current_step)) + + def __call__(self, module, args, outputs) -> None: # type: ignore + super().__call__(module, args, kwargs={}, outputs=outputs) + + def print_value(self, name: str, value: Any) -> bool: + if isinstance(value, torch.Tensor): + if export_path := self.export_path: + full_path = f"{export_path}/{name}.pt" + torch.save(value, full_path) + else: + print(name, value) + return True + return False + + def remove(self): + super().remove() + + if self._handle: + self._handle.remove() diff --git a/src/max/pipelines/nn/kernels.py b/src/max/pipelines/nn/kernels.py new file mode 100644 index 0000000000..476491da17 --- /dev/null +++ b/src/max/pipelines/nn/kernels.py @@ -0,0 +1,910 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""Helper functions for wrapping custom kv cache/attention related ops.""" + +from __future__ import annotations + +from dataclasses import dataclass +from enum import Enum + +import numpy as np +from max.dtype import DType +from max.graph import Dim, TensorType, TensorValue, TensorValueLike, ops +from max.graph.quantization import QuantizationConfig +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + KVCacheParams, + KVCacheStrategy, + PagedKVCacheCollection, +) + + +def fused_qkv_ragged_matmul( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + wqkv: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + n_heads: int, + bias: TensorValue | None = None, +) -> TensorValue: + """Computes fused query, key, and value projections with ragged input. + + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + Raises: + ValueError: on input shapes/dtypes that are invalid for the kernel. + """ + if input.dtype != wqkv.dtype: + msg = ( + "expected input and wqkv to have the same dtype, but got" + f" {input.dtype} and {wqkv.dtype}, respectively." + ) + raise ValueError(msg) + + input_rank_expected = 2 + if input.rank != input_rank_expected: + msg = f"expected input to have rank {input_rank_expected}, was {input.rank}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for fused_qkv_ragged_matmul: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = int(kv_params.page_size) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + + if bias: + op_name = f"mo.fused_qkv_matmul.ragged.{cache_strategy_str}.bias" + + return ops.inplace_custom( + op_name, + values=[ + input, + input_row_offsets, + wqkv, + kv_collection, + layer_idx, + bias, + ], + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters=parameters, + )[0].tensor + + op_name = f"mo.fused_qkv_matmul.ragged.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, input_row_offsets, wqkv, kv_collection, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters=parameters, + )[0].tensor + + +def fused_qkv_ragged_matmul_quantized( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + wqkv: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + n_heads: int, + quantization_config: QuantizationConfig, + perm_idx: TensorValue | None = None, + bias: TensorValue | None = None, +) -> TensorValue: + """Computes fused query, key, and value projections with ragged input and + quantized weight matrices. A `quantization_config` must be provided. + + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + Raises: + ValueError: on input shapes/dtypes that are invalid for the kernel. + """ + + input_rank_expected = 2 + if input.rank != input_rank_expected: + msg = f"expected input to have rank {input_rank_expected}, was {input.rank}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for fused_qkv_ragged_matmul: {kv_params.cache_strategy}" + raise ValueError(msg) + + # In the group-wise quantization scheme, every `group_size` quantized weights + # share the same scale. If `has_zp` is `True`, there is also a group-wise zero + # point that need to be substracted from the quantized weights. + # Since the new extensibility API doesn't currently support `bool` type parameters, + # we pass `has_zp` as an interger (`has_zp_int`). + # For GPTQ, `has_zp_int` will always be 0. + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + "group_size": quantization_config.group_size, + "has_zp_int": 0, + } + if perm_idx: + input = ops.gather(input, TensorValue(perm_idx), axis=1) + wqkv = ops.custom( + "GPTQ_gpu_repack_b4_g128_desc_act", + list((wqkv, perm_idx)), + out_types=[ + TensorType( + DType.uint8, + ((wqkv.shape[1], wqkv.shape[0])), + ) + ], + )[0].tensor + else: + wqkv = ops.custom( + "GPTQ_gpu_repack_b4_g128", + list((wqkv,)), + out_types=[ + TensorType( + DType.uint8, + ((wqkv.shape[1], wqkv.shape[0])), + ) + ], + )[0].tensor + + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = int(kv_params.page_size) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + + args = [input, input_row_offsets, wqkv, kv_collection, layer_idx] + if bias: + args.append(bias) + bias_name_str = "bias." + else: + bias_name_str = "" + + op_name = f"mo.fused_qkv_matmul.ragged.{cache_strategy_str}.{bias_name_str}quantized" + + return ops.inplace_custom( + op_name, + values=args, + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters=parameters, + )[0].tensor + + +def fused_qkv_matmul( + kv_params: KVCacheParams, + input: TensorValue, + wqkv: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: TensorValue, + n_heads: int, +) -> TensorValue: + """Computes fused query, key and value projections.""" + if input.dtype != wqkv.dtype: + msg = ( + "expected input and wqkv to have the same dtype, but got" + f" {input.dtype} and {wqkv.dtype}, respectively." + ) + raise ValueError(msg) + + input_rank_expected = 3 + if input.rank != input_rank_expected: + msg = f"expected input to have rank {input_rank_expected}, was {input.rank}" + raise ValueError(msg) + + wqkv_rank_expected = 2 + if wqkv.rank != wqkv_rank_expected: + msg = ( + f"expected wqkv to have rank {wqkv_rank_expected}, was {wqkv.rank}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for fused_qkv_matmul: {kv_params.cache_strategy}" + raise ValueError(msg) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.fused_qkv_matmul.padded.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, wqkv, kv_collection, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, + shape=input.shape[:-1] + [n_heads * kv_params.head_dim], + device=input.device, + ) + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + )[0].tensor + + +def matmul_kv_cache_ragged( + kv_params: KVCacheParams, + hidden_states: TensorValue, + input_row_offsets: TensorValue, + weight: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: int | np.integer, +) -> None: + """Computes key and value projections with ragged input. + + `hidden_states` and `input_row_offsets` are used together to + implement the ragged tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + """ + if hidden_states.dtype != weight.dtype: + msg = ( + "expected hidden_states and weight to have the same dtype, but got" + f" {hidden_states.dtype} and {weight.dtype}, respectively." + ) + raise ValueError(msg) + + hidden_states_rank_expected = 2 + if hidden_states.rank != hidden_states_rank_expected: + msg = ( + "expected hidden_states to have rank " + f"{hidden_states_rank_expected}, was {hidden_states.rank}" + ) + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for matmul_kv_cache_ragged: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.kv_matmul.ragged.{cache_strategy_str}" + + ops.inplace_custom( + name=op_name, + values=[ + hidden_states, + input_row_offsets, + weight, + kv_collection, + ops.constant(layer_idx, DType.uint32), + ], + parameters=parameters, + ) + + +def fused_qk_ragged_rope( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + freqs_cis: TensorValue, + layer_idx: TensorValue, + interleaved: bool = True, +) -> TensorValue: + """Computes fused query-key attention with rotary positional encodings and ragged inputs. + + `input` and `input_row_offsets` are used together to implement the ragged tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + """ + + if input.dtype != freqs_cis.dtype: + msg = ( + "expected input and freqs_cis to share a dtype, but got" + f" {input.dtype} and {freqs_cis.dtype} respectively" + ) + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = ( + "expected input_row_offsets to have dtype uint32, was" + f" {input_row_offsets.dtype}" + ) + + if layer_idx.dtype != DType.uint32: + msg = f"expected layer_idx to have dtype uint32, was {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for fused_qk_ragged_rope: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, bool | int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + "interleaved": interleaved, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.fused_qk_rope.ragged.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, input_row_offsets, kv_collection, freqs_cis, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def fused_qk_rope( + kv_params: KVCacheParams, + input: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + freqs_cis_2d: TensorValue, + layer_idx: TensorValue, + interleaved: bool = True, +) -> TensorValue: + """Computes fused query-key attention with rotary positional encodings.""" + input_rank_expected = 4 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + freqs_cis_rank_expected = 2 + if freqs_cis_2d.rank != freqs_cis_rank_expected: + msg = ( + f"expected freqs_cis_2d of rank {freqs_cis_rank_expected} but got " + f"{freqs_cis_2d.rank}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for fused_qk_rope: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, bool | int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + "interleaved": interleaved, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.fused_qk_rope.padded.{cache_strategy_str}" + + return ops.inplace_custom( + op_name, + values=[input, kv_collection, freqs_cis_2d, layer_idx], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def flash_attention( + kv_params: KVCacheParams, + input: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: TensorValue, + attention_mask: TensorValue, + valid_lengths: TensorValue, + scale: float, +) -> TensorValue: + """Computes flash attention provided the mo.opaque KV Cache.""" + input_rank_expected = 4 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if attention_mask.dtype != input.dtype: + msg = ( + f"expected attention mask dtype {attention_mask.dtype} to match " + f"the input's dtype {input.dtype}" + ) + raise ValueError(msg) + + if valid_lengths.dtype != DType.uint32: + msg = f"expected uint32 valid_lengths but got {valid_lengths.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for flash_attention: {kv_params.cache_strategy}" + raise ValueError(msg) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.mha.padded.{cache_strategy_str}.tensor_mask.no_pos" + + return ops.inplace_custom( + op_name, + values=[ + input, + kv_collection, + layer_idx, + attention_mask, + valid_lengths, + # NOTE: The scale argument to the flash attention kernel is + # constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + )[0].tensor + + +def flash_attention_with_causal_mask( + kv_params: KVCacheParams, + input: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection, + layer_idx: TensorValue, + valid_lengths: TensorValue, + scale: float, +) -> TensorValue: + """Computes flash attention provided the mo.opaque KV Cache. + Notably, materializes the causal mask within the kernel.""" + + if input.shape[0] != valid_lengths.shape[0]: + msg = ( + "expected batch size of input, to equal length of valid_lengths" + f" got batch size of input ({input.shape[0]}), length of" + f" valid_lengths ({valid_lengths.shape[0]})" + ) + raise ValueError(msg) + + if input.dtype != kv_params.dtype: + msg = ( + f"expected input to be dtype: {kv_params.dtype}, got {input.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if valid_lengths.dtype != DType.uint32: + msg = f"expected uint32 valid_lengths but got {valid_lengths.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy != KVCacheStrategy.CONTINUOUS: + msg = f"unsupported cache strategy for flash_attention_with_causal_mask: {kv_params.cache_strategy}" + raise ValueError(msg) + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.mha.padded.{cache_strategy_str}.causal_mask.no_pos" + + return ops.inplace_custom( + op_name, + values=[ + input, + kv_collection, + layer_idx, + valid_lengths, + # NOTE: The scale argument to flash attention is constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + )[0].tensor + + +@dataclass +class MHAMaskConfig: + attention_mask_variant: AttentionMaskVariant + positional_encoding_variant: PositionalEncodingVariant + + +class AttentionMaskVariant(str, Enum): + NULL_MASK = "null_mask" + CAUSAL_MASK = "causal_mask" + TENSOR_MASK = "tensor_mask" + + +class PositionalEncodingVariant(str, Enum): + NO_POS = "no_pos" + ALIBI_POS = "alibi_pos" + + +class MHAMaskVariant(str, Enum): + CAUSAL_MASK = 0 + CAUSAL_ALIBI_MASK = 1 + NULL_MASK = 2 + + +_MHA_MASK_CONFIG_DICT = { + MHAMaskVariant.CAUSAL_MASK: MHAMaskConfig( + attention_mask_variant=AttentionMaskVariant.CAUSAL_MASK, + positional_encoding_variant=PositionalEncodingVariant.NO_POS, + ), + MHAMaskVariant.CAUSAL_ALIBI_MASK: MHAMaskConfig( + attention_mask_variant=AttentionMaskVariant.CAUSAL_MASK, + positional_encoding_variant=PositionalEncodingVariant.ALIBI_POS, + ), + MHAMaskVariant.NULL_MASK: MHAMaskConfig( + attention_mask_variant=AttentionMaskVariant.NULL_MASK, + positional_encoding_variant=PositionalEncodingVariant.NO_POS, + ), +} + + +def flash_attention_ragged( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + mask_variant: MHAMaskVariant, + scale: float, +) -> TensorValue: + """Computes flash (self) attention provided the `!mo.opaque` KV Cache. + + Notably, this materializes the attention mask (dependent on MHAMaskVariant) + within the kernel. + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + Note that this is self attention and the KV sequence length is + assumed to be equal to the Q sequence length. + For KV sequence length != Q sequence length, use `cross_attention_ragged`. + """ + input_rank_expected = 3 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + if input.dtype != kv_params.dtype: + msg = ( + f"expected input to be dtype: {kv_params.dtype}, got {input.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = f"expected uint32 input_row_offsets but got {input_row_offsets.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for flash_attention_ragged: {kv_params.cache_strategy}" + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + mha_mask_config = _MHA_MASK_CONFIG_DICT[mask_variant] + op_name = f"mo.mha.ragged.{cache_strategy_str}.{str(mha_mask_config.attention_mask_variant.value)}.{str(mha_mask_config.positional_encoding_variant.value)}" + + return ops.inplace_custom( + op_name, + values=[ + input, + input_row_offsets, + kv_collection, + layer_idx, + # NOTE: The scale argument to flash attention is constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def cross_attention_ragged( + kv_params: KVCacheParams, + input: TensorValue, + input_row_offsets: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection | PagedKVCacheCollection, + layer_idx: TensorValue, + mask_variant: MHAMaskVariant, + kv_input_row_offsets: TensorValue, + q_max_seq_len: TensorValue, + scale: float, +) -> TensorValue: + """Computes cross attention provided the `!mo.opaque` KV Cache. + + Notably, this materializes the attention mask (dependent on MHAMaskVariant) + within the kernel. + `input` and `input_row_offsets` are used together to implement the ragged + tensor. + `input_row_offsets` indicates where each batch starts and ends in `input` + + attention, `kv_input_row_offsets` represents the KV sequence length. + """ + input_rank_expected = 3 + if input.rank != input_rank_expected: + msg = ( + f"expected input of rank {input_rank_expected} but got {input.rank}" + ) + raise ValueError(msg) + + if input.dtype != kv_params.dtype: + msg = ( + f"expected input to be dtype: {kv_params.dtype}, got {input.dtype}" + ) + raise ValueError(msg) + + if layer_idx.dtype != DType.uint32: + msg = f"expected uint32 layer_idx but got {layer_idx.dtype}" + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = f"expected uint32 input_row_offsets but got {input_row_offsets.dtype}" + raise ValueError(msg) + + if kv_params.cache_strategy not in { + KVCacheStrategy.CONTINUOUS, + KVCacheStrategy.PAGED, + }: + msg = f"unsupported cache strategy for cross_attention_ragged: {kv_params.cache_strategy}" + raise ValueError(msg) + + if q_max_seq_len and (q_max_seq_len.dtype != DType.uint32): + msg = ( + "expected q_max_seq_len to be uint32 but got {q_max_seq_len.dtype}" + ) + raise ValueError(msg) + + parameters: dict[str, int | str | DType] = { + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + } + if kv_params.cache_strategy == KVCacheStrategy.PAGED: + assert kv_params.page_size is not None + parameters["page_size"] = kv_params.page_size + + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + mha_mask_config = _MHA_MASK_CONFIG_DICT[mask_variant] + op_name = f"mo.cross_attention.ragged.{cache_strategy_str}.{str(mha_mask_config.attention_mask_variant.value)}.{str(mha_mask_config.positional_encoding_variant.value)}" + + return ops.inplace_custom( + op_name, + values=[ + input, + input_row_offsets, + # Plumb in the query max sequence length for cross attention. + # For self attention this is the same as the KV max seq len stored + # on the kv_collection, but that isn't the case for cross attention. + q_max_seq_len, + kv_input_row_offsets, + kv_collection, + layer_idx, + # NOTE: The scale argument to flash attention is constrained to float32. + ops.constant(scale, dtype=DType.float32), + ], + out_types=[ + TensorType( + dtype=input.dtype, shape=input.shape, device=input.device + ) + ], + parameters=parameters, + )[0].tensor + + +def swish_glu( + a: TensorValueLike, b0: TensorValueLike, b1: TensorValueLike +) -> TensorValue: + """Computes swish(a@b0.t()) * (a@b1.t())""" + a = TensorValue(a) + b0 = TensorValue(b0) + b1 = TensorValue(b1) + a_rank_expected = 2 + if a.rank != a_rank_expected: + msg = f"expected a to have rank {a_rank_expected}, was {a.rank}" + raise ValueError(msg) + + b0_rank_expected = 2 + if b0.rank != b0_rank_expected: + msg = f"expected b0 to have rank {b0_rank_expected}, was {b0.rank}" + raise ValueError(msg) + + b1_rank_expected = 2 + if b1.rank != b1_rank_expected: + msg = f"expected b1 to have rank {b1_rank_expected}, was {b1.rank}" + raise ValueError(msg) + + m = a.shape[0] + n = b0.shape[0] + if b0.shape[1] != a.shape[1]: + msg = f"a.shape[1] == {a.shape[1]} != {b0.shape[1]} == b0.shape[1]" + raise ValueError(msg) + + if b0.shape != b1.shape: + msg = f"b0.shape == {b0.shape} != {b1.shape} == b1.shape" + raise ValueError(msg) + + if a.dtype != b0.dtype or a.dtype != b1.dtype: + msg = ( + "Element types of all arguments must be equal, but received" + f" {a.dtype}, {b0.dtype}, and {b1.dtype}." + ) + raise ValueError(msg) + + return ops.custom( + "swishGLU", + values=[a, b0, b1], + out_types=[ + TensorType( + dtype=a.dtype, + shape=[m, n], + device=a.device, + ) + ], + )[0].tensor + + +def rms_norm_key_cache( + kv_params: KVCacheParams, + kv_collection: ContinuousBatchingKVCacheCollection, + gamma: TensorValue, + epsilon: float | np.floating, + layer_idx: int | np.integer, + total_seq_len: Dim, + input_row_offsets: TensorValue, +) -> None: + """Computes RMSNorm on the _new_ entries in the KVCache. + + Currently, the KVCacheT class itself isn't aware of the new cache entries + until cache length increment, which happens after model forward. + So use `input_row_offsets` to do this bookkeeping. + """ + cache_strategy_str = kv_params.cache_strategy.kernel_substring() + op_name = f"mo.rms_norm_kv_cache.ragged.{cache_strategy_str}" + + gamma_rank_expected = 1 + if gamma.rank != gamma_rank_expected: + msg = ( + f"expected gamma of rank {gamma_rank_expected} but got {gamma.rank}" + ) + raise ValueError(msg) + + if input_row_offsets.dtype != DType.uint32: + msg = f"expected uint32 input_row_offsets but got {input_row_offsets.dtype}" + raise ValueError(msg) + + ops.inplace_custom( + op_name, + values=[ + kv_collection, + gamma, + ops.constant(epsilon, gamma.dtype), + ops.constant(layer_idx, DType.uint32), + ops.cast(TensorValue.from_dim(total_seq_len), DType.uint32), + input_row_offsets, + ], + parameters={ + "num_heads": kv_params.n_kv_heads_per_device, + "head_dim": kv_params.head_dim, + }, + ) diff --git a/src/max/pipelines/nn/layer/__init__.py b/src/max/pipelines/nn/layer/__init__.py new file mode 100644 index 0000000000..d3a8fc44a9 --- /dev/null +++ b/src/max/pipelines/nn/layer/__init__.py @@ -0,0 +1,30 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .layer import ( + Layer, + LayerV2, + add_layer_hook, + clear_hooks, + recursive_named_layers, +) +from .layer_list import LayerList + +__all__ = [ + "Layer", + "LayerV2", + "add_layer_hook", + "clear_hooks", + "recursive_named_layers", + "LayerList", +] diff --git a/src/max/pipelines/nn/layer/layer.py b/src/max/pipelines/nn/layer/layer.py new file mode 100644 index 0000000000..31443d97e1 --- /dev/null +++ b/src/max/pipelines/nn/layer/layer.py @@ -0,0 +1,390 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +import difflib +import threading +from abc import ABC, abstractmethod +from collections import deque +from functools import wraps +from inspect import signature +from typing import ( + Any, + Callable, + Dict, + Iterable, + Mapping, + Tuple, + Union, + get_args, +) + +import numpy as np +from max.driver import DLPackArray, Tensor +from max.dtype import DType +from max.graph import ShapeLike, Weight +from max.graph.quantization import QuantizationEncoding +from max.graph.weights import WeightData + +from .._identity import IdentitySet + +DLPackCompatible = Union[DLPackArray, np.ndarray] + + +class Layer: + """Base Layer class. + + Currently, only functionality is for adding hooks to the call function of + each layer to support testing, debugging or profiling. + """ + + def __init_subclass__(cls): + if cls.__name__ == "LayerV2": + # LayerV2 subclasses Layer, but we don't want to apply + # _call_with_hooks to it. + return + # Check `__dict__` instead of `hasattr` because `hasattr` passes on + # subclasses that don't implement the method. + if "__call__" in cls.__dict__: + setattr(cls, "__call__", _call_with_hooks(cls.__dict__["__call__"])) + + def __call__(self, *args, **kwargs): + """Defines the forward function of this layer. + + Subclasses must override this function. There is no exact signature that a + call function must follow, but inputs/outputs should generally be + `max.graph.TensorValue`. Non-`TensorValue` inputs are fine, but + cannot be updated once the graph is built. + """ + + +class LayerV2(Layer, ABC): + """(new) Base class for model layers with weight management. + + This will be merged with the above class once all layers have been moved to + V2. + """ + + def __init__(self): + # `__init__` may be called if `__setattr__` is called before + # `super().__init__()`. So, to avoid resetting the values, first + # check to see if the layer has been initialized before. + if not hasattr(self, "_sublayers"): + self._sublayers: dict[str, LayerV2] = {} + self._layer_weights: dict[str, Weight] = {} + self._weight_values: dict[str, DLPackCompatible] = {} + self._shared_weights: dict[str, Weight] = {} + + def __setattr__(self, name, value): + try: + if isinstance(value, LayerV2): + self._sublayers[name] = value + elif isinstance(value, Weight): + self._layer_weights[value.name] = value + except AttributeError: + # The layer didn't call `super().__init__()` first thing. + LayerV2.__init__(self) + self.__setattr__(name, value) + return + super().__setattr__(name, value) + + def __repr__(self): + # TODO: Make this pretty + return f"{type(self).__name__}({len(self.sublayers)} layers, {len(self.layer_weights)} weights)" + + @property + def layer_weights(self) -> dict[str, Weight]: + return self._layer_weights + + def __delattr__(self, name: str): + self._sublayers.pop(name, None) + self._layer_weights.pop(name, None) + self._shared_weights.pop(name, None) + super().__delattr__(name) + + def set_shared_weight(self, name: str, weight: Weight): + setattr(self, name, weight) + self._shared_weights[name] = weight + + @property + def sublayers(self) -> dict[str, LayerV2]: + return self._sublayers + + def load_state_dict( + self, + state_dict: Mapping[str, DLPackCompatible | WeightData], + *, + override_quantization_encoding: bool = False, + ) -> None: + """Sets the values of all weights in this model. + + Args: + state_dict: A map from weight name to a numpy array or + max.driver.Tensor. + override_quantization_encoding: Whether to override the weight + quantization based on the loaded value. + + Raises: + Error if any weight in the model is not present in the state dict. + """ + for name, layer in recursive_named_layers(self): + weight_prefix = f"{name}." if name else "" + for weight_name, weight in layer.layer_weights.items(): + # Skip the shared weights, since their values are loaded with + # the original layers. + if weight_name in layer._shared_weights: + continue + full_weight_name = f"{weight_prefix}{weight_name}" + if (data := state_dict.get(full_weight_name)) is not None: + if isinstance(data, WeightData): + data = _array_from_weight_loader( + weight, + data, + override_quantization_encoding, + full_weight_name, + ).data + else: + _validate_weight_value(weight, data, full_weight_name) + self._weight_values[full_weight_name] = data + weight.name = full_weight_name + else: + msg = f"Could not find weight '{full_weight_name}'. " + if possible_match := difflib.get_close_matches( + full_weight_name, state_dict.keys(), n=1 + ): + msg += f" Did you mean '{possible_match[0]}'?" + raise ValueError() + + def state_dict( + self, auto_initialize: bool = True + ) -> dict[str, DLPackCompatible]: + """Returns values of all weights in the model. + + The values returned are the same as the values set in `load_state_dict`. + If `load_state_dict` has not been called and none of the weights have + values, then they are initialized to zero. + + Args: + auto_initialize: Determines whether to initialize weights to zero if + the weight value has not been loaded. If this is False, a + ValueError is raised if an uninitialized weight is found. + + Returns: + Map from weight name to the weight value (can be numpy array or + max.driver.Tensor). + """ + + state_dict = {} + for full_weight_name, weight in self.raw_state_dict().items(): + if (data := self._weight_values.get(full_weight_name)) is None: + if not auto_initialize: + raise ValueError( + f"Weight '{full_weight_name}' was not initialized." + ) + data = self._weight_values[full_weight_name] = Tensor.zeros( + weight.shape.static_dims, weight.dtype + ) + state_dict[full_weight_name] = data + return state_dict + + def raw_state_dict(self) -> dict[str, Weight]: + """Returns all weights objects in the model. + Unlike `state_dict`, this returns `max.graph.Weight` objects instead of + the assigned values. Some parameters inside the `Weight` can be + configured before a graph is built. Do not change these attributes after + building a graph: + + - Weight.shape + - Weight.dtype + - Weight.quantization_encoding + - Weight.device + - Weight.align + + Returns: + Map from weight name to the `max.graph.Weight` object. + """ + state_dict = {} + for name, layer in recursive_named_layers(self): + prefix = f"{name}." if name else "" + + for weight_name, weight in layer.layer_weights.items(): + state_dict[f"{prefix}{weight_name}"] = weight + return state_dict + + @abstractmethod + def __call__(self, *args, **kwargs): + """Defines the forward function of this layer. + + Subclasses must override this function. There is no exact signature that a + call function must follow, but inputs/outputs should generally be + `max.graph.TensorValue`. Non-`TensorValue` inputs are fine, but + cannot be updated once the graph is built. + """ + + +def _array_from_weight_loader( + weight: Weight, + data: WeightData, + override_quantization_encoding: bool, + name: str, +) -> WeightData: + """Processes and validates the data from WeightData.""" + + if weight.quantization_encoding == QuantizationEncoding.GPTQ: + # Load all weights with GPTQ quantization as uint8. + # Store the original shape and dtype of the weight (used in layers like + # GPTLinear). + weight.original_dtype_and_shape = (data.dtype, data.shape) + data = data.view(DType.uint8) + else: + data = data.astype(weight.dtype) + + if weight.quantization_encoding: + # TODO: Set the quantized weight shape correctly when initializing the + # weight. For now, we trust that the value loaded from the checkpoint + # has the correct shape. + weight._shape = data.shape + elif weight.shape != data.shape: + raise ValueError( + f"Value provided to weight '{name}' had different shape" + f" (expected={weight.shape}, actual={data.shape})" + ) + + if weight.quantization_encoding != data.quantization_encoding: + if override_quantization_encoding: + weight.quantization_encoding = data.quantization_encoding + # We don't raise an error if `override_quantization_encoding` is `False` + # because in some cases the data is not aware of its own quantization + # type (e.g. data loaded from GPTQ Safetensors do not have a + # quantization label) + return data.astype(weight.dtype) + + +def _get_value_shape_dtype(value: DLPackCompatible) -> tuple[ShapeLike, DType]: + if isinstance(value, Tensor): + shape = value.shape + dtype = value.dtype + elif isinstance(value, np.ndarray): + shape = value.shape + dtype = DType.from_numpy(value.dtype) + else: + # `from_dlpack` does not copy the data. + value_tensor = Tensor.from_dlpack(value) + shape = value_tensor.shape + dtype = value_tensor.dtype + + return shape, dtype + + +def _validate_weight_value(weight: Weight, value: Any, name: str) -> None: + if not isinstance(value, get_args(DLPackCompatible)): + raise ValueError( + f"The class type of '{name}' value ({type(value)}) is not an array " + "type that we understand. Please use a numpy array or max.driver.Tensor." + ) + + shape, dtype = _get_value_shape_dtype(value) + + diffs = [] + weight_shape = tuple(weight.shape.static_dims) + if shape != weight_shape: + diffs.append(f"shape (expected={weight_shape}, actual={shape})") + if dtype != weight.dtype: + diffs.append(f"dtype (expected={weight.dtype}, actual={dtype})") + if diffs: + diff_str = " and ".join(diffs) + raise ValueError( + f"Value provided to weight '{name}' had different {diff_str}." + ) + + +def recursive_named_layers( + parent: LayerV2, prefix: str = "" +) -> Iterable[tuple[str, LayerV2]]: + """Recursively walks through the layers and generates names.""" + seen = IdentitySet() + queue: deque[tuple[str, LayerV2]] = deque() + queue.append((prefix, parent)) + + while queue: + name, layer = queue.popleft() + if layer in seen: + continue + seen.add(layer) + + yield (name, layer) + prefix = f"{name}." if name else "" + for local_name, layer in layer.sublayers.items(): + queue.append((f"{prefix}{local_name}", layer)) + + +_LOCAL = threading.local() +_LAYER_HOOKS = _LOCAL._layer_hooks = [] + + +def add_layer_hook( + fn: Callable[[Layer, Tuple[Any, ...], Dict[str, Any], Any], Any], +) -> None: + """Adds a hook to call a function after each layer's `__call__`. + + The function will be passed four inputs: the layer, input_args, + input_kwargs and outputs. The function can either return `None` or new + outputs that will replace the layer returned outputs. + + Note that input and outputs contain graph Values, which show limited + information (like shape and dtype). You can still see the computed values + if you include the Value in the `graph.output` op, or call `value.print`. + + Example of printing debug inputs: + + .. code-block:: python + + def print_info(layer, args, kwargs, outputs): + print("Layer:", type(layer).__name__) + print("Input args:", args) + print("Input kwargs:", kwargs) + print("Outputs:", outputs) + return outputs + + add_layer_hook(print_info) + """ + _LAYER_HOOKS.append(fn) + + +def clear_hooks(): + """Remove all hooks.""" + _LAYER_HOOKS.clear() + + +def _call_with_hooks(call_fn): + @wraps(call_fn) + def __call_with_hooks(layer, *args, **kwargs): + # Hide this wrapper from rich traceback. + _rich_traceback_omit = True + + outputs = call_fn(layer, *args, **kwargs) + # Use the inspect lib to ensure that args and kwargs are passed + # to the hook as defined in the function signature. + bound_args = signature(call_fn).bind(layer, *args, **kwargs) + for hook in _LAYER_HOOKS: + # Call the hook. Note that the first argument in `bound_args.args` + # is the layer, so it is skipped. + hook_outputs = hook( + layer, bound_args.args[1:], bound_args.kwargs, outputs + ) + if hook_outputs is not None: + outputs = hook_outputs + return outputs + + return __call_with_hooks diff --git a/src/max/pipelines/nn/layer/layer_list.py b/src/max/pipelines/nn/layer/layer_list.py new file mode 100644 index 0000000000..1f0aad4d82 --- /dev/null +++ b/src/max/pipelines/nn/layer/layer_list.py @@ -0,0 +1,77 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Sequence + +from max.graph import TensorValue + +from .layer import Layer, LayerV2 + + +class LayerList(LayerV2): + """Stores a list of layers. + + Can be used as a regular python list.""" + + def __init__(self, layers: Sequence[Layer]): + super().__init__() + self.layers = list(layers) + + # Only assign `LayerV2` objects to Sequential.sublayers. We ensure that + # the V2 functionality (getting sublayers) is correct by throwing + # an error in the `sublayers` property if any layer is still V1. + for n, layer in enumerate(layers): + if isinstance(layer, LayerV2): + self._sublayers[str(n)] = layer + + @property + def sublayers(self) -> dict[str, LayerV2]: + if len(self._sublayers) != len(self.layers): + raise ValueError( + "Not all layers in this Sequential object have " + "been migrated to V2." + ) + return super().sublayers + + def __len__(self): + return len(self.layers) + + def __getitem__(self, i: int) -> Layer: + return self.layers[i] + + def __delitem__(self, i: int): + del self.layers[i] + + def __setitem__(self, i: int, layer: Layer): + self.layers[i] = layer + + def insert(self, i, layer: Layer): + self.layers.insert(i, layer) + + def append(self, layer: Layer): + self.layers.append(layer) + + def extend(self, layer: Layer): + self.layers.append(layer) + + def __str__(self): + return str(self.layers) + + def __iter__(self): + return iter(self.layers) + + def __call__(self, *args, **kwargs) -> TensorValue: + x = self.layers[0](*args, **kwargs) + for layer in self.layers[1:]: + x = layer(x) + return x diff --git a/src/max/pipelines/nn/linear.py b/src/max/pipelines/nn/linear.py new file mode 100644 index 0000000000..c09c5e8d74 --- /dev/null +++ b/src/max/pipelines/nn/linear.py @@ -0,0 +1,560 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Multi-layer Perceptron.""" + +from __future__ import annotations + +from dataclasses import dataclass +from typing import Optional + +import numpy as np +from max.dtype import DType +from max.graph import ( + BufferValue, + DeviceRef, + TensorValue, + TensorValueLike, + Weight, + ops, +) +from max.graph.quantization import QuantizationConfig, QuantizationEncoding +from max.graph.weights import Weights + +from .clamp import clamp +from .kernels import swish_glu +from .layer import Layer, LayerV2 + + +class LinearV2(LayerV2): + """ + Applies a linear transformation to incoming data: :math:`y = xW^T + b`. + + This layer implements a fully connected layer where inputs are multiplied + by a weight matrix and optionally added with a bias vector. + Both weights and bias initially reside on CPU, and the model init phase + moves them to :obj:`device`. + + Example: + + .. code-block:: python + + linear_layer = LinearV2( + in_dim=256, + out_dim=128, + dtype=DType.float32, + device=DeviceRef.GPU(), + name="linear", + has_bias=True + ) + + # Input tensor of shape: [batch, ..., 256] + input_tensor: TensorValue + output = linear_layer(input_tensor) + """ + + weight: Weight + """The weight matrix stored on CPU with shape (out_dim, in_dim). + Model init transposes the weight and moves it to :obj:`device`.""" + + bias: Weight | None = None + """The optional bias vector stored on CPU with shape (out_dim,). + Model init moves the bias to :obj:`device` if present.""" + + device: DeviceRef | None + """The device where matrix operations are performed.""" + + def __init__( + self, + in_dim: int, + out_dim: int, + dtype: DType, + device: DeviceRef | None = None, + has_bias: bool = False, + quantization_encoding: Optional[QuantizationEncoding] = None, + name: Optional[str] = None, + clip_weight: Optional[float] = None, + ) -> None: + """Initializes the linear layer with weights and optional bias. + + Args: + in_dim: The dimensionality of the input space. + out_dim: The dimensionality of the output space. + dtype: The data type for both weights and bias. + device: The target device for computation. + Weights remain on CPU until moved during computation. + name: Base name for weights (appended with ``.weight`` and + ``.bias`` if applicable). + has_bias: When :obj:`True`, adds a bias vector to the layer. + Defaults to :obj:`False`. + """ + super().__init__() + + self.device = device + self.clip_weight = clip_weight + + self.weight = Weight( + name=f"{name}.weight" if name else "weight", + dtype=dtype, + shape=(out_dim, in_dim), + device=DeviceRef.CPU() if self.device else None, + quantization_encoding=quantization_encoding, + ) + + if has_bias: + self.bias = Weight( + name=f"{name}.bias" if name else "bias", + dtype=dtype, + shape=(out_dim,), + device=DeviceRef.CPU() if self.device else None, + quantization_encoding=quantization_encoding, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + """Applies a linear transformation to the input data. + + Args: + x: Input tensor of shape ``(..., in_dim)``. + The last dimension must match the layer's ``in_dim``. + The input tensor must reside on :obj:`device`. + + Returns: + Output tensor of shape ``(..., out_dim)``. + The result resides on the device specified in :obj:`device`. + + Raises: + ValueError: If the last dimension of ``x`` doesn't match ``in_dim``. + """ + weight: TensorValue = self.weight + if self.device: + weight = weight.to(self.device) + + if self.clip_weight: + weight = clamp(weight, -self.clip_weight, self.clip_weight) + + if self.weight.quantization_encoding: + res = ops.qmatmul( + self.weight.quantization_encoding, + None, + x, + weight, + ) + else: + res = x @ weight.T + if self.bias is not None: + bias = self.bias.to(self.device) if self.device else self.bias + res += bias + return res + + +def _allocate_if_needed(value: Weights | Weight, dtype, shape) -> Weight: + if isinstance(value, Weight): + return value + else: + return value.weight.allocate(dtype, shape) + + +@dataclass +class Linear(Layer): + """A unified linear layer that delegates to either regular or quantized implementation.""" + + weight: TensorValueLike + bias: Optional[TensorValueLike] = None + + def __call__(self, x: TensorValue) -> TensorValue: + weight = TensorValue(self.weight) + res = x @ weight.T + if self.bias is not None: + res += self.bias + return res + + @classmethod + def create( + cls, + dtype: DType, + quantization_encoding: Optional[QuantizationEncoding], + in_features: int, + out_features: int, + weights: Weights | Weight, + bias: Optional[Weights | Weight] = None, + quantization_config: Optional[QuantizationConfig] = None, + ) -> "Linear": + """Factory method to create a Linear layer with appropriate implementation.""" + if not quantization_encoding: + weight = _allocate_if_needed( + weights, dtype, [in_features, out_features] + ) + bias_weight = ( + _allocate_if_needed(bias, dtype, [out_features]) + if bias + else None + ) + return Linear(weight=weight, bias=bias_weight) + else: + return QLinear._create( + dtype, + quantization_encoding, + in_features, + out_features, + weights, + bias, + quantization_config, + ) + + +@dataclass +class QLinear(Linear): + """A quantized fully connected layer.""" + + # Because Linear.bias is optional and Linear is a dataclass and we inherit from Linear, all our fields must be optional even if it doesn't make logical sense + quantization_encoding: QuantizationEncoding | None = None + + @classmethod + def _create( + cls, + dtype: DType, + quantization_encoding: QuantizationEncoding, + in_features: int, + out_features: int, + weights: Weights | Weight, + bias: Optional[Weights | Weight], + quantization_config: Optional[QuantizationConfig], + ) -> "Linear": + if quantization_encoding != QuantizationEncoding.GPTQ: + weight = _allocate_if_needed( + weights, dtype, [in_features, out_features] + ) + bias_weight = ( + _allocate_if_needed(bias, dtype, [out_features]) + if bias + else None + ) + return QLinear( + weight=weight, + bias=bias_weight, + # GGUF weights can have different quantization per weight + quantization_encoding=weight.quantization_encoding, + ) + else: + return GPTQLinear._create( + dtype, + quantization_encoding, + in_features, + out_features, + weights, + bias, + quantization_config, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + assert self.quantization_encoding is not None + weight = TensorValue(self.weight) + res = ops.qmatmul( + self.quantization_encoding, + None, + x, + weight, + ) + if self.bias is not None: + res += TensorValue(self.bias) + return res + + +@dataclass +class GPTQLinear(QLinear): + "A Linear layer for GPTQ encoding" + + # Because QLinear has optional fields, so must we, since we subclass QLinear + quantization_config: QuantizationConfig | None = None + perm_idx: Optional[TensorValueLike] | None = None + + @classmethod + def _create( + cls, + dtype: DType, + quantization_encoding: QuantizationEncoding, + in_features: int, + out_features: int, + weights: Weights | Weight, + bias: Optional[Weights | Weight], + quantization_config: Optional[QuantizationConfig], + ) -> "Linear": + """Internal method to create a Linear layer from GPTQ weights.""" + + assert quantization_config, ( + "QuantizationConfig must be provided for GPTQLinear" + ) + + assert quantization_config.sym, "GPTQ with sym=False is not supported." + + desc_act = quantization_config.desc_act + + perm_idx = None + + if isinstance(weights, Weights) and weights.qweight.exists(): + orig_quantized_weights = [weights.qweight, weights.scales] + quantized_weights = [] + for idx, qw in enumerate(orig_quantized_weights): + orig = qw.allocate() + # TODO(AITLIB-135): allocate_as_bytes is only available for + # safetensors. This isn't a problem right now because gptq is + # only present for safetensors + weight_bytes = qw.allocate_as_bytes() # type: ignore + assert len(orig.shape) == 2 + reshaped = ops.reshape( + weight_bytes, + (orig.shape[0] * orig.dtype.size_in_bytes, orig.shape[1]), + ).transpose(0, 1) + quantized_weights.append(reshaped) + + weight = ops.concat( + (quantized_weights[0], quantized_weights[1]), axis=1 + ).transpose(0, 1) + + if desc_act: + perm_idx = weights.g_idx.allocate( + DType.int32, + [out_features], + ) + # hack: argsort the perm_idx array + weights._allocated[perm_idx.name] = np.argsort( # type: ignore + weights._allocated[perm_idx.name] # type: ignore + ).astype(np.int32) + + return GPTQLinear( + weight=weight, + bias=None, + quantization_encoding=quantization_encoding, + quantization_config=quantization_config, + perm_idx=perm_idx, + ) + + else: + weight = _allocate_if_needed( + weights, DType.bfloat16, [in_features, out_features] + ) + bias_weight = ( + _allocate_if_needed(bias, dtype, [out_features]) + if bias + else None + ) + return Linear(weight, bias_weight) + + def __call__(self, x: TensorValue) -> TensorValue: + assert self.quantization_encoding is not None + weight = TensorValue(self.weight) + if self.perm_idx is not None: + perm_idx = TensorValue(self.perm_idx) + res = ops.qmatmul( + self.quantization_encoding, + self.quantization_config, + ops.gather(x, perm_idx, axis=(x.rank - 1)), + weight, + perm_idx, + ) + else: + res = ops.qmatmul( + self.quantization_encoding, + self.quantization_config, + x, + weight, + ) + if self.bias is not None: + res += TensorValue(self.bias) + return res + + +@dataclass +class GPTQLinearV2(LinearV2): + "A Linear layer for GPTQ encoding" + + def __init__( + self, + in_dim: int, + out_dim: int, + dtype: DType, + device: DeviceRef | None = None, + has_bias: bool = False, + quantization_encoding: Optional[QuantizationEncoding] = None, + quantization_config: Optional[QuantizationConfig] = None, + ) -> None: + """Initializes the linear layer with weights and optional bias with + GPTQ quantization. + + Args: + in_dim: The dimensionality of the input space. + out_dim: The dimensionality of the output space. + dtype: The data type for both weights and bias. + device: The target device for computation. + Weights remain on CPU until moved during computation. + has_bias: When :obj:`True`, adds a bias vector to the layer. + Defaults to :obj:`False`. + quantization_encoding: The quantization encoding of the weights. + quantization_config: Extra config for the weight quantization. + """ + del out_dim, dtype # Unused. + if has_bias: + raise ValueError("has_bias=True is not supported in GPTQLinear.") + + # Skip LinearV2 initialization. + LayerV2.__init__(self) + self.device = device + self.qweight = Weight( + name="qweight", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + device=DeviceRef.CPU() if device else None, + quantization_encoding=quantization_encoding, + ) + self.scales = Weight( + name="scales", + dtype=DType.uint8, + shape=(1, 1), # Shape will be overridden at load_state_dict. + device=DeviceRef.CPU() if device else None, + quantization_encoding=quantization_encoding, + ) + + assert quantization_config, ( + "QuantizationConfig must be provided for GPTQLinear" + ) + assert quantization_config.sym, "GPTQ with sym=False is not supported." + + self.quantization_config = quantization_config + + desc_act = self.quantization_config.desc_act + self.perm_idx = None + if desc_act: + self.perm_idx = Weight( + "perm_idx", + DType.int32, + [in_dim], + device=DeviceRef.CPU() if device else None, + ) + + def __call__(self, x: TensorValue) -> TensorValue: + assert self.qweight.quantization_encoding is not None + qweight_dtype, qweight_shape = self.qweight.original_dtype_and_shape + qweight = ops.reshape( + self.qweight, + (qweight_shape[0] * qweight_dtype.size_in_bytes, qweight_shape[1]), + ).transpose(0, 1) + + scales_dtype, scales_shape = self.scales.original_dtype_and_shape + scales = ops.reshape( + self.scales, + (scales_shape[0] * scales_dtype.size_in_bytes, scales_shape[1]), + ).transpose(0, 1) + weight = ops.concat((qweight, scales), axis=1).transpose(0, 1) + if self.device: + weight = weight.to(self.device) + if self.perm_idx is not None: + perm_idx: TensorValue = self.perm_idx + if self.device: + perm_idx = perm_idx.to(self.device) + + res = ops.qmatmul( + self.qweight.quantization_encoding, + self.quantization_config, + ops.gather(x, self.perm_idx, axis=(x.rank - 1)), + weight, + self.perm_idx, + ) + else: + res = ops.qmatmul( + self.qweight.quantization_encoding, + None, + x, + weight, + ) + if self.bias is not None: + res += TensorValue(self.bias) + return res + + +@dataclass +class MLP(Layer): + """ + Simple multi-layer perceptron composed of three linear layers. + Uses SiLU activation function. + """ + + gate_proj: Linear + down_proj: Linear + up_proj: Linear + + def __call__(self, x: TensorValueLike) -> TensorValue: + if ( + self.gate_proj.bias is None + and self.up_proj.bias is None + and TensorValue(x).rank == 2 + and TensorValue(x).device is not None + and TensorValue(x).device != DeviceRef.CPU() + and False # GEX-1476: This causes elaboration errors - disable swish_glu pathway. + ): + return self.down_proj( + swish_glu( + x, + self.gate_proj.weight, + self.up_proj.weight, + ) + ) + + return self.down_proj(ops.silu(self.gate_proj(x)) * self.up_proj(x)) # type: ignore + + +@dataclass +class MLPV2(LayerV2): + """ + Simple multi-layer perceptron composed of three linear layers. + Uses SiLU activation function. + """ + + gate_proj: LinearV2 + down_proj: LinearV2 + up_proj: LinearV2 + + def __post_init__(self): + super().__init__() + + def __call__(self, x: TensorValueLike) -> TensorValue: + if ( + self.gate_proj.bias is None + and self.up_proj.bias is None + and TensorValue(x).rank == 2 + and TensorValue(x).device is not None + and TensorValue(x).device != DeviceRef.CPU() + and False # GEX-1476: This causes elaboration errors - disable swish_glu pathway. + ): + return self.down_proj( + swish_glu( + x, + self.gate_proj.weight, + self.up_proj.weight, + ) + ) + + return self.down_proj( + ops.silu(self.gate_proj(x)) * self.up_proj(x) # type: ignore + ) + + +@dataclass +class DistributedMLP(Layer): + list_of_mlps: list[MLP] + num_devices: int + + def __call__( + self, x: list[TensorValue], signal_buffers: list[BufferValue] + ) -> list[TensorValue]: + mlp_outs = [self.list_of_mlps[i](x[i]) for i in range(self.num_devices)] + return ops.allreduce.sum(mlp_outs, signal_buffers) diff --git a/src/max/pipelines/nn/norm/__init__.py b/src/max/pipelines/nn/norm/__init__.py new file mode 100644 index 0000000000..6c5ff6c0b1 --- /dev/null +++ b/src/max/pipelines/nn/norm/__init__.py @@ -0,0 +1,23 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .layer_norm import LayerNorm, LayerNormV2 +from .rms_norm import DistributedRMSNorm, RMSNorm, RMSNormV2 + +__all__ = [ + "LayerNorm", + "LayerNormV2", + "RMSNorm", + "RMSNormV2", + "DistributedRMSNorm", +] diff --git a/src/max/pipelines/nn/norm/layer_norm.py b/src/max/pipelines/nn/norm/layer_norm.py new file mode 100644 index 0000000000..9619d19ced --- /dev/null +++ b/src/max/pipelines/nn/norm/layer_norm.py @@ -0,0 +1,75 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Layer Normalization layer.""" + +from __future__ import annotations + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import TensorValue, Weight, ops + +from ..layer import Layer, LayerV2 + + +@dataclass +class LayerNorm(Layer): + """Layer normalization block.""" + + weight: Weight + bias: Weight | None = None + eps: float = 1e-6 + + def __call__(self, input: TensorValue): + # TODO: AIPIPE-95 Replace with a broadcasting rmo.layer_norm + bias = ( + ops.cast(self.bias, input.dtype) + if self.bias + # If bias wasn't passed then use bias-less layer norm (beta = 0). + else ops.broadcast_to( + ops.constant(0.0, input.dtype), shape=(input.shape[-1],) + ) + ) + return ops.layer_norm( + input, + gamma=ops.cast(self.weight, input.dtype), + beta=bias, + epsilon=self.eps, + ) + + +class LayerNormV2(LayerV2): + """Layer normalization block.""" + + def __init__(self, dims: int, eps: float = 1e-5, use_bias=True): + self.weight = Weight("weight", DType.float32, (dims,)) + self.bias = Weight("bias", DType.float32, (dims,)) if use_bias else None + self.eps = eps + + def __call__(self, input: TensorValue): + # TODO: AIPIPE-95 Replace with a broadcasting rmo.layer_norm + bias = ( + ops.cast(self.bias, input.dtype) + if self.bias + # If bias wasn't passed then use bias-less layer norm (beta = 0). + else ops.broadcast_to( + ops.constant(0.0, input.dtype), shape=(input.shape[-1],) + ) + ) + return ops.layer_norm( + input, + gamma=ops.cast(self.weight, input.dtype), + beta=bias, + epsilon=self.eps, + ) diff --git a/src/max/pipelines/nn/norm/rms_norm.py b/src/max/pipelines/nn/norm/rms_norm.py new file mode 100644 index 0000000000..f6e4b455c3 --- /dev/null +++ b/src/max/pipelines/nn/norm/rms_norm.py @@ -0,0 +1,64 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Normalization layer.""" + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import ( + DeviceRef, + TensorType, + TensorValue, + TensorValueLike, + Weight, + ops, +) + +from ..layer import Layer, LayerV2 + + +@dataclass +class RMSNorm(Layer): + weight: TensorValueLike + eps: float = 1e-6 + + def __call__(self, x: TensorValue) -> TensorValue: + return ops.custom( + "rms_norm", + [x, ops.cast(self.weight, x.dtype), ops.cast(self.eps, x.dtype)], + [TensorType(dtype=x.dtype, shape=x.shape, device=x.device)], + )[0].tensor + + +@dataclass +class DistributedRMSNorm(Layer): + rms_norms: list[RMSNorm] + devices: list[DeviceRef] + + def __call__(self, xs: list[TensorValue]) -> list[TensorValue]: + return [self.rms_norms[i](xs[i]) for i in range(len(self.devices))] + + +class RMSNormV2(LayerV2): + def __init__(self, dim: int, eps: float = 1e-6): + super().__init__() + self.weight = Weight("weight", DType.float32, [dim]) + self.eps = eps + + def __call__(self, x: TensorValue) -> TensorValue: + return ops.custom( + "rms_norm", + [x, ops.cast(self.weight, x.dtype), ops.cast(self.eps, x.dtype)], + [TensorType(dtype=x.dtype, shape=x.shape, device=x.device)], + )[0].tensor diff --git a/src/max/pipelines/nn/rotary_embedding.py b/src/max/pipelines/nn/rotary_embedding.py new file mode 100644 index 0000000000..ae622d8dad --- /dev/null +++ b/src/max/pipelines/nn/rotary_embedding.py @@ -0,0 +1,156 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""The rope embedding used within the model.""" + +from dataclasses import dataclass +from functools import cached_property +from typing import Optional + +import numpy as np +from max.dtype import DType +from max.graph import Dim, DimLike, TensorValue, TensorValueLike, ops + +from .layer import LayerV2 + + +@dataclass +class RotaryEmbedding(LayerV2): + """ + RotaryEmbedding layer to calculate and apply the frequency tensor for complex exponentials. + """ + + dim: DimLike + n_heads: int + theta: float + """Hyperparameter used to control the frequency scaling of the sinusoidal components of the embeddings.""" + max_seq_len: int + """The maximum sequence length for model's input.""" + rope_scaling: Optional[np.ndarray] = None + """Scaling factor for the positional frequencies.""" + _freqs_cis: Optional[TensorValueLike] = None + interleaved: bool = True + + def __post_init__(self): + super().__init__() + + def freqs_cis_base(self) -> TensorValue: + """ + Computes the frequency tensor for complex exponentials (cis) + for a given seq_len. Tensor is scaled with theta parameter. + Required to apply Rotary Position Embedding (RoPE) to tensor. + See 'Roformer: Enhanced Transformer with Rotary Embedding' + (arxiv.org/pdf/2104.09864). + + Returns: + The frequency tensor for complex exponentials with shape + (max_seq_len * 2, dim//(2 * n_heads), 2) + """ + if self._freqs_cis is None: + n = self.dim // self.n_heads # type: ignore + # Note: using float64 to avoid an overflow on the exponential, then converting back to float32. + iota = ops.range( + ops.constant(0, DType.float64), + ops.constant(n - 1, DType.float64), # type: ignore + ops.constant(2, DType.float64), + out_dim=n // 2, + ) + if self.rope_scaling is not None: + iota = iota * self.rope_scaling + freqs = ops.cast(1.0 / (self.theta ** (iota / n)), DType.float32) + t = ops.range( + ops.constant(0, DType.float32), + ops.constant(self.max_seq_len * 2.0, DType.float32), + ops.constant(1, DType.float32), + out_dim=self.max_seq_len * 2, + ) + freqs = ops.outer(t, freqs) + self._freqs_cis = ops.stack( + [ops.cos(freqs), ops.sin(freqs)], axis=-1 + ) + return TensorValue(self._freqs_cis) + + @cached_property + def freqs_cis(self) -> TensorValue: + self._freqs_cis = self.freqs_cis_base() + return self._freqs_cis + + def __call__( + self, x: TensorValueLike, start_pos: TensorValue, seq_len: Dim + ) -> TensorValue: + """Applies rotary positional embeddings (RoPE) to `x`. + + Args: + x: Activation tensor with shape (batch, seq_len, n_kv_heads, head_dim). + start_pos: starting position of input tensor + seq_len: length of input tensor + + Returns: + Input activation tensor with rotary positional embeddings applied and + the same shape as `x`. + """ + v = TensorValue(x) + + if self.interleaved: + complex = ops.as_interleaved_complex(v) + x_re = complex[..., 0] + x_im = complex[..., 1] + else: + head_dim = v.shape[-1] + head_dim_val = TensorValue(head_dim) + half_dim = head_dim // 2 + half_dim_val = TensorValue(half_dim) + slice_re = (slice(0, half_dim_val), half_dim) + slice_im = (slice(half_dim_val, head_dim_val), half_dim) + x_re = v[..., slice_re] + x_im = v[..., slice_im] + + seq_len_val = TensorValue(seq_len) + freqs_cis_sliced = self.freqs_cis[ + (slice(start_pos, start_pos + seq_len_val), seq_len), + ] + # TODO(MSDK-1188): Ideally this cast would happen inside of the cached + # self.freqs_cis property instead of here, but complex.dtype is not + # known at that point. + freqs_cis_sliced = ops.cast(freqs_cis_sliced, v.dtype) + + freqs_cis_bcast = ops.unsqueeze(ops.unsqueeze(freqs_cis_sliced, 1), 0) + + freqs_re = freqs_cis_bcast[..., 0] + freqs_im = freqs_cis_bcast[..., 1] + + rope_re = (x_re * freqs_re) - (x_im * freqs_im) + rope_im = (x_re * freqs_im) + (x_im * freqs_re) + + if self.interleaved: + rope_complex = ops.stack([rope_re, rope_im], axis=-1) + else: + rope_complex = ops.concat((rope_re, rope_im), axis=-1) + + # Cast back to the activations dtype, which may differ from + # freqs_cis's dtype. + return ops.cast(ops.reshape(rope_complex, v.shape), v.dtype) + + +@dataclass +class OptimizedRotaryEmbedding(RotaryEmbedding): + """ + Optimized version of RotaryEmbedding using 2D frequency tensor representation. + """ + + @cached_property + def freqs_cis(self): + freqs = self.freqs_cis_base() + d1, d2, d3 = freqs.shape + new_f_shape = [d1.dim, d2.dim * d3.dim] # type: ignore + self._freqs_cis = ops.reshape(freqs, new_f_shape) + return self._freqs_cis diff --git a/src/max/pipelines/nn/sequential.py b/src/max/pipelines/nn/sequential.py new file mode 100644 index 0000000000..0d75fb976f --- /dev/null +++ b/src/max/pipelines/nn/sequential.py @@ -0,0 +1,20 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""A General sequential layer, each layer is executed with the outputs of the previous.""" + +from .layer import LayerList + + +class Sequential(LayerList): + """A sequential stack of layers where each layer is called by the outputs + of the previous layer.""" diff --git a/src/max/pipelines/nn/transformer/__init__.py b/src/max/pipelines/nn/transformer/__init__.py new file mode 100644 index 0000000000..02c70b1c3c --- /dev/null +++ b/src/max/pipelines/nn/transformer/__init__.py @@ -0,0 +1,29 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +"""The transformer mechanism used within the model.""" + +from .distributed_transformer import ( + DistributedTransformer, + DistributedTransformerBlock, +) +from .naive_transformer import NaiveTransformer, NaiveTransformerBlock +from .transformer import Transformer, TransformerBlock + +__all__ = [ + "DistributedTransformer", + "DistributedTransformerBlock", + "NaiveTransformer", + "NaiveTransformerBlock", + "Transformer", + "TransformerBlock", +] diff --git a/src/max/pipelines/nn/transformer/distributed_transformer.py b/src/max/pipelines/nn/transformer/distributed_transformer.py new file mode 100644 index 0000000000..0172b003f0 --- /dev/null +++ b/src/max/pipelines/nn/transformer/distributed_transformer.py @@ -0,0 +1,149 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from dataclasses import dataclass + +from max.dtype import DType +from max.graph import BufferValue, DeviceRef, TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..attention.interfaces import DistributedAttentionImpl +from ..embedding import VocabParallelEmbedding +from ..layer import Layer +from ..linear import DistributedMLP, LinearV2 +from ..norm import DistributedRMSNorm, LayerNorm, RMSNorm + + +# TODO (pavan): clean up duplicate instances of distribute_value, shard_col_value, +# shard_row_value across the codebase into a multi gpu utils file +def distribute_value(v, devices: list[DeviceRef]): + return [v.to(device) for device in devices] + + +@dataclass +class DistributedTransformerBlock(Layer): + """Stack of Attention, FeedForward, and RMSNorm layers.""" + + attention: DistributedAttentionImpl + mlp: DistributedMLP + attention_norm: DistributedRMSNorm + mlp_norm: DistributedRMSNorm + devices: list[DeviceRef] + + def __call__( + self, + xs: list[TensorValue], + signal_buffers: list[BufferValue], + kv_collections: list[ + ContinuousBatchingKVCacheCollection | PagedKVCacheCollection + ], + **kwargs, + ) -> list[TensorValue]: + attn_outs = self.attention( + self.attention_norm(xs), signal_buffers, kv_collections, **kwargs + ) + + hs = [x + attn_out for x, attn_out in zip(xs, attn_outs)] + mlp_outs = self.mlp(self.mlp_norm(hs), signal_buffers) + hs = [h + mlp_out for h, mlp_out in zip(hs, mlp_outs)] + + return hs + + +@dataclass +class DistributedTransformer(Layer): + """Transformer model consisting for TransformerBlock layers.""" + + dim: int + n_heads: int + layers: list[DistributedTransformerBlock] + norm: RMSNorm | LayerNorm + output: LinearV2 + embedding: VocabParallelEmbedding + kv_params: KVCacheParams + kv_collection_constructor: ( + FetchContinuousBatchingKVCacheCollection | FetchPagedKVCacheCollection + ) + devices: list[DeviceRef] + all_logits: bool = False + + def __call__( + self, + tokens: TensorValueLike, + signal_buffers: list[BufferValue], + kv_cache_inputs_per_dev: list[tuple[TensorValue, ...]], + **kwargs, + ) -> tuple[TensorValue, ...]: + h = self.embedding(tokens, signal_buffers) + + kv_collections = [ + self.kv_collection_constructor(*kv_cache_inputs) + for kv_cache_inputs in kv_cache_inputs_per_dev + ] + + for _, layer in enumerate(self.layers): + h = layer(h, signal_buffers, kv_collections, **kwargs) + + h0 = h[0] # All the outputs are the same here. + if self.all_logits: + # When echo is enabled, the logits of the input tokens are + # returned. + logits = ops.cast(self.output(self.norm(h0)), DType.float32) + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets: TensorValueLike = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + last_token_logits = ops.gather( + logits, last_token_indices, axis=0 + ) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths: TensorValueLike = kwargs["valid_lengths"] + last_token_logits = ops.gather_nd( + logits, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + return (last_token_logits, logits) + else: + # Otherwise, only return the logits for the last non-pad token + # (right-padded). + if "input_row_offsets" in kwargs: + # For ragged tensors gather the last tokens from packed dim 0. + input_row_offsets = kwargs["input_row_offsets"] + last_token_indices = input_row_offsets[1:] - 1 # type: ignore + # Should be: last_token = h[last_token_indices] + last_token = ops.gather(h0, last_token_indices, axis=0) + else: + # For padded tensors, use `gather_nd`. + # Unsqueeze since `gather_nd` expects a static last dim. + valid_lengths = kwargs["valid_lengths"] + last_token = ops.gather_nd( + h0, + indices=ops.unsqueeze(valid_lengths - 1, -1), # type: ignore + batch_dims=1, + ) + + # Always return float32 logits, no matter the activation type + return ( + ops.cast(self.output(self.norm(last_token)), DType.float32), + ) diff --git a/src/max/pipelines/nn/transformer/naive_transformer.py b/src/max/pipelines/nn/transformer/naive_transformer.py new file mode 100644 index 0000000000..ae3dadbb2d --- /dev/null +++ b/src/max/pipelines/nn/transformer/naive_transformer.py @@ -0,0 +1,139 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from typing import Callable + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops + +from ..attention import NaiveAttentionWithRope +from ..embedding import Embedding, EmbeddingV2 +from ..layer import Layer, LayerList, LayerV2 +from ..linear import Linear, LinearV2 + + +class NaiveTransformerBlock(LayerV2): + """Max-Graph Only Stack of Attention, FeedForward, and RMSNorm layers.""" + + def __init__( + self, + attention: NaiveAttentionWithRope, + mlp: Layer, + attention_norm: Layer, + mlp_norm: Layer, + residual_multiplier: float = 1.0, + ): + super().__init__() + self.self_attn = attention + self.mlp = mlp + self.input_layernorm = attention_norm + self.post_attention_layernorm = mlp_norm + self.residual_multiplier = residual_multiplier + + def __call__( + self, + x: TensorValue, + attention_mask: TensorValueLike, + k_cache: TensorValueLike, + v_cache: TensorValueLike, + start_pos: TensorValue, + layer_index: int, + ) -> tuple[TensorValue, TensorValue, TensorValue]: + residual_multiplier = ops.constant(self.residual_multiplier, x.dtype) + attn_out = self.self_attn( + self.input_layernorm(x), + attention_mask, + k_cache, # type: ignore + v_cache, # type: ignore + start_pos, + layer_index, + ) + + if self.residual_multiplier != 1.0: + attn_out = attn_out * residual_multiplier + + h = x + attn_out + mlp = self.mlp(self.post_attention_layernorm(h)) + if self.residual_multiplier != 1.0: + mlp = mlp * residual_multiplier + + return h + mlp + + +class NaiveTransformer(LayerV2): + """Max-Graph only model consisting of NaiveTransformerBlock layers.""" + + def __init__( + self, + dim: int, + n_heads: int, + layers: list[NaiveTransformerBlock], + norm: Layer, + output: Linear | LinearV2, + theta: float, + embedding: Embedding | EmbeddingV2, + output_type: DType | None = None, + embedding_multiplier: float = 1.0, + logits_postprocessor: Callable[[TensorValue], TensorValue] + | None = None, + ): + super().__init__() + self.dim = dim + self.n_heads = n_heads + self.layers = LayerList(layers) + self.norm = norm + self.lm_head = output + self.theta = theta + self.embed_tokens = embedding + self.output_type = output_type + self.embedding_multiplier = embedding_multiplier + self.logits_postprocessor = logits_postprocessor + + def _apply_logits_postprocessor( + self, output: tuple[TensorValue] + ) -> tuple[TensorValue]: + if self.logits_postprocessor is None: + return output + return tuple(self.logits_postprocessor(elem) for elem in output) # type:ignore + + def __call__( + self, + tokens: TensorValueLike, + attention_mask: TensorValueLike, + k_cache: TensorValueLike, + v_cache: TensorValueLike, + start_pos: TensorValueLike, + ) -> tuple[TensorValue]: + h = self.embed_tokens(tokens) + + if self.embedding_multiplier != 1.0: + h = h * ops.constant(self.embedding_multiplier, h.dtype) + + for i in range(len(self.layers)): + h = self.layers[i]( + h, + attention_mask, + k_cache, + v_cache, + start_pos, + i, + ) + + output = self.lm_head(self.norm(h)) + if self.output_type is not None: + casted_output = ops.cast(output, self.output_type) + return self._apply_logits_postprocessor((casted_output,)) + + return self._apply_logits_postprocessor((output,)) diff --git a/src/max/pipelines/nn/transformer/transformer.py b/src/max/pipelines/nn/transformer/transformer.py new file mode 100644 index 0000000000..c0ba441975 --- /dev/null +++ b/src/max/pipelines/nn/transformer/transformer.py @@ -0,0 +1,162 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from __future__ import annotations + +from collections.abc import Sequence +from typing import Callable + +from max.dtype import DType +from max.graph import TensorValue, TensorValueLike, ops +from max.pipelines.kv_cache import ( + ContinuousBatchingKVCacheCollection, + FetchContinuousBatchingKVCacheCollection, + FetchPagedKVCacheCollection, + KVCacheParams, + PagedKVCacheCollection, +) + +from ..attention.interfaces import ( + AttentionImpl, + AttentionImplQKV, + AttentionImplV2, +) +from ..embedding import Embedding, EmbeddingV2 +from ..layer import Layer, LayerList, LayerV2 +from ..linear import Linear, LinearV2 + + +class TransformerBlock(LayerV2): + """Stack of Attention, FeedForward, and RMSNorm layers.""" + + def __init__( + self, + attention: AttentionImpl | AttentionImplV2 | AttentionImplQKV, + mlp: Layer, + attention_norm: Layer, + mlp_norm: Layer, + residual_multiplier: float = 1.0, + ): + super().__init__() + self.self_attn = attention + self.mlp = mlp + self.input_layernorm = attention_norm + self.post_attention_layernorm = mlp_norm + self.residual_multiplier = residual_multiplier + + def __call__( + self, + x: TensorValue, + kv_collection: ContinuousBatchingKVCacheCollection + | PagedKVCacheCollection, + **kwargs, + ) -> TensorValue: + residual_multiplier = ops.constant(self.residual_multiplier, x.dtype) + attn_out = self.self_attn( + self.input_layernorm(x), + kv_collection, + **kwargs, + ) + + if self.residual_multiplier != 1.0: + attn_out = attn_out * residual_multiplier + + h = x + attn_out + mlp = self.mlp(self.post_attention_layernorm(h)) + if self.residual_multiplier != 1.0: + mlp = mlp * residual_multiplier + + return h + mlp + + +class Transformer(LayerV2): + """Transformer model consisting for TransformerBlock layers.""" + + def __init__( + self, + dim: int, + n_heads: int, + layers: list[TransformerBlock], + norm: Layer, + output: Linear | LinearV2, + embedding: Embedding | EmbeddingV2, + kv_params: KVCacheParams, + kv_collection_constructor: ( + FetchContinuousBatchingKVCacheCollection + | FetchPagedKVCacheCollection + ), + all_logits: bool = False, + embedding_multiplier: float = 1.0, + logits_postprocessor: Callable[[TensorValue], TensorValue] + | None = None, + ): + super().__init__() + self.dim = dim + self.n_heads = n_heads + self.layers = LayerList(layers) + self.norm = norm + self.lm_head = output + self.embed_tokens = embedding + self.kv_params = kv_params + self.kv_collection_constructor = kv_collection_constructor + self.all_logits = all_logits + self.embedding_multiplier = embedding_multiplier + self.logits_postprocessor = logits_postprocessor + + def _apply_logits_postprocessor( + self, output: tuple[TensorValue, ...] + ) -> tuple[TensorValue, ...]: + if self.logits_postprocessor is None: + return output + return tuple(self.logits_postprocessor(elem) for elem in output) + + def __call__( + self, + tokens: TensorValueLike, + kv_cache_inputs: Sequence[TensorValue], + **kwargs, + ) -> tuple[TensorValue, ...]: + # TODO: Split into a ragged and non-ragged version. + h = self.embed_tokens(tokens) + + if self.embedding_multiplier != 1.0: + h = h * ops.constant(self.embedding_multiplier, h.dtype) + + kv_collection = self.kv_collection_constructor(*kv_cache_inputs) + + for _, layer in enumerate(self.layers): + h = layer(h, kv_collection, **kwargs) + + normalized = self.norm(h) + + if "input_row_offsets" in kwargs: + # Ragged inputs/activations + last_indices = kwargs["input_row_offsets"][1:] - 1 + last_tokens = ops.gather(normalized, last_indices, axis=0) + else: + # Dense padded inputs/activations + valid_lengths = kwargs["valid_lengths"] + # TODO: Remove once `gather_nd` works with nonstatic last dims. + indices = ops.unsqueeze(valid_lengths - 1, -1) + last_tokens = ops.gather_nd(normalized, indices, batch_dims=1) + + # Always return float32 logits, no matter the activation type. + last_token_logits = ops.cast(self.lm_head(last_tokens), DType.float32) + + if self.all_logits: + all_logits = ops.cast(self.lm_head(normalized), DType.float32) + return self._apply_logits_postprocessor( + (last_token_logits, all_logits) + ) + + return self._apply_logits_postprocessor((last_token_logits,)) diff --git a/src/max/pipelines/pipeline.py b/src/max/pipelines/pipeline.py new file mode 100644 index 0000000000..d1c951a3ab --- /dev/null +++ b/src/max/pipelines/pipeline.py @@ -0,0 +1,761 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# mypy: disable-error-code="import-not-found" +"""HF Token Generation Pipeline""" + +from __future__ import annotations + +import logging +from abc import ABC, abstractmethod +from dataclasses import dataclass +from typing import ( + Generic, + Optional, + Protocol, + Sequence, + Type, + TypeVar, + runtime_checkable, +) + +import torch +from max.driver import Device, Tensor +from max.dtype import DType +from max.engine import InferenceSession +from max.pipelines.kv_cache import ( + KVCacheInputs, + KVCacheInputsSequence, + infer_optimal_batch_size, +) +from max.profiler import Tracer, traced +from transformers import AutoTokenizer + +from .config import PipelineConfig +from .context import InputContext +from .interfaces import ( + LogProbabilities, + TextGenerationResponse, + TextGenerationStatus, + TextResponse, + TokenGenerator, +) +from .kv_cache import KVCacheManager, KVCacheParams +from .sampling import token_sampler + +try: + import xgrammar as xgr + + # This retrieves the last logger handler added + # which presumably is the one initialized in xgrammar + # and removes it, this stops our server logging from + # doubling up. + logger = logging.getLogger() + handler = logger.handlers[-1] + logger.removeHandler(handler) +except ImportError: + pass + +logger = logging.getLogger("max.pipelines") + +ARCH_SAFE_VRAM_USAGE_LIMIT = { + "DeepseekCoder": 0.96, + "ExaoneForCausalLM": 0.96, + "LlamaForCausalLM": 0.96, + "MistralForCausalLM": 0.96, +} + + +def upper_bounded_default(upper_bound: int, default: int | None) -> int: + """ + Given an upper bound and an optional default value, returns a final value + that cannot exceed the upper bound. + + Args: + default: The default value to use, or None to use the upper bound. + upper_bound: The upper bound to use. + + Raises: + ValueError: If the provided default value exceeds the upper bound. + + Returns: + The final value. + """ + if default is None: + return upper_bound + elif default > upper_bound: + raise ValueError( + f"default value provided ({default}) exceeds the upper bound ({upper_bound})" + ) + return default + + +class ModelInputs: + """ + Base class for model inputs. + Use this class to encapsulate inputs for your model. + You may store any number of dataclass fields + + Example: + >>> class ReplitInputs(ModelInputs): + ... tokens: Tensor + ... input_row_offsets: Tensor + ... + ... def __init__(self, tokens: Tensor, input_row_offsets: Tensor): + ... self.tokens = tokens + ... self.input_row_offsets = input_row_offsets + ... + >>> # Create tensors + >>> tokens = Tensor.zeros((1, 2, 3), DType.int64) + >>> input_row_offsets = Tensor.zeros((1, 1, 1), DType.int64) + >>> # Initialize inputs + >>> inputs = ReplitInputs(tokens=tokens, input_row_offsets=input_row_offsets) + >>> # Access tensors + >>> list(inputs) == [tokens, input_row_offsets] + True + """ + + kv_cache_inputs: KVCacheInputs | None = None + + +@dataclass(frozen=True) +class ModelOutputs: + next_token_logits: Tensor | None = None + """Logits for just the next token.""" + + logits: Tensor | None = None + """Logits for the entire token sequence.""" + + +T = TypeVar("T", bound=InputContext) + + +class PipelineModel(ABC, Generic[T]): + """A pipeline model with setup, input preparation and execution methods.""" + + _MAX_DEFAULT_BATCH_SIZE = 4096 + _MIN_DEFAULT_BATCH_SIZE = 1 + + def __init__( + self, pipeline_config: PipelineConfig, session: InferenceSession + ) -> None: + self.pipeline_config = pipeline_config + + if isinstance(self, KVCacheMixin): + self.kv_manager = self.load_kv_manager( + session, pipeline_config._available_cache_memory + ) + + @classmethod + @abstractmethod + def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + """Calculate the optimal max sequence length for the model. + Models are expected to implement this method. + + Example: + >>> class MistralModel(PipelineModel): + ... @classmethod + ... def calculate_max_seq_len(cls, pipeline_config: PipelineConfig) -> int: + ... try: + ... return upper_bounded_default( + ... upper_bound=pipeline_config.huggingface_config.max_seq_len, + ... default=pipeline_config.max_length, + ... ) + ... except ValueError as e: + ... msg = ( + ... "Unable to infer max_length for Mistral, the provided " + ... f"max_length ({pipeline_config.max_length}) exceeds the " + ... f"model's max_seq_len " + ... f"({pipeline_config.huggingface_config.max_seq_len})." + ... ) + ... raise ValueError(msg) from e + ... + """ + raise NotImplementedError( + "PipelineModel must implement calculate_max_seq_len" + ) + + @classmethod + @abstractmethod + def get_kv_params(cls, pipeline_config: PipelineConfig) -> KVCacheParams: + """Returns the KV cache params for the pipeline model.""" + ... + + @classmethod + @abstractmethod + def get_num_layers(cls, pipeline_config: PipelineConfig) -> int: + """Returns the number of layers for the pipeline model.""" + ... + + @classmethod + def infer_optimal_batch_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + ) -> int: + """Returns the estimated optimal batch size to run the model + given current memory constraints.""" + if not issubclass(cls, KVCacheMixin): + # we rely on the KVCache setup to know optimal batch size. + # If we don't have that, default to BS=1. + return 1 + elif ( + len(pipeline_config.devices) == 1 + and pipeline_config.devices[0].is_host + ): + # batching on CPU is generally not useful, so we hard-code a batch size of 1. + return 1 + + # TODO we should map HF configs to a unified MAX Config object + # this would help avoid these excessive calls to class methods. + n_layers = cls.get_num_layers(pipeline_config) + kv_params = cls.get_kv_params(pipeline_config) + inferred_batch_size = infer_optimal_batch_size( + params=kv_params, + max_seq_len=cls.calculate_max_seq_len(pipeline_config), + num_layers=n_layers, + available_cache_memory=available_cache_memory, + devices=pipeline_config.devices, + ) + + # clamp the floor of the inferred batch size to 1 and the ceiling to 4096 + inferred_batch_size = max( + cls._MIN_DEFAULT_BATCH_SIZE, + min(inferred_batch_size, cls._MAX_DEFAULT_BATCH_SIZE), + ) + return inferred_batch_size + + @classmethod + def estimate_weights_size(cls, pipeline_config: PipelineConfig) -> int: + """Calculates the estimated memory consumption of our model.""" + + # TODO move this logic to the PipelineModel instead of PipelineConfig class. + # Better yet, make this more accurate by loading and measuring memory consumption + # after we load the model + return pipeline_config.weights_size() + + @abstractmethod + def execute( + self, + model_inputs: ModelInputs, + ) -> ModelOutputs: + """Executes the graph with the given inputs. + + Args: + model_inputs: The model inputs to execute, containing tensors and any other + required data for model execution. + + Returns: + ModelOutputs containing the pipeline's output tensors. + + This is an abstract method that must be implemented by concrete PipelineModels + to define their specific execution logic. + """ + + @abstractmethod + def prepare_initial_token_inputs( + self, + context_batch: Sequence[T], + kv_cache_inputs: KVCacheInputs | None = None, + ) -> ModelInputs: + """Prepares the initial inputs to be passed to `.execute()`. + + The inputs and functionality of this method can vary per model. + For example, the model inputs could include: + - Encoded tensors + - A unique IDs for each tensor if this model uses a KV Cache manager. + - kv_cache_inputs: The kv cache inputs required for the model. This + should be None if the model does not use KV Cache. + This function would batch the encoded tensors, claim a slot in the kv + cache if the ID hasn't been seen before, and return the inputs and + caches as a list of tensors.""" + ... + + @abstractmethod + def prepare_next_token_inputs( + self, + next_tokens: Tensor, + prev_model_inputs: ModelInputs, + ) -> ModelInputs: + """Prepares the secondary inputs to be passed to `.execute()`. + + While `prepare_initial_token_inputs` is responsible for managing the initial inputs. + This function is responsible for updating the inputs, for each step in a multi-step execution pattern. + """ + ... + + def compute_log_probabilities( + self, + model_inputs: ModelInputs, + model_outputs: ModelOutputs, + next_tokens: Tensor, + batch_top_n: list[int], + batch_echo: list[bool], + ) -> list[LogProbabilities | None] | None: + """Optional method that can be overridden to compute log probabilities. + + Args: + model_inputs: Inputs to the model returned by + `prepare_*_token_inputs()`. + model_outputs: Outputs returned by `execute()`. + next_tokens: Sampled tokens. Should have shape=[batch size] + batch_top_n: Number of top log probabilities to return per input in + the batch. For any element where `top_n == 0`, the + LogProbabilities is skipped. + batch_echo: Whether to include input tokens in the returned log + probabilities. + + Returns: + List of log probabilities. + """ + raise NotImplementedError( + f"Log probabilities not implemented for {type(self)}." + ) + + +@runtime_checkable +class KVCacheMixin(Protocol): + def load_kv_manager( + self, + session: InferenceSession, + available_cache_memory: Optional[int], + ) -> KVCacheManager: + """Provided a PipelineConfig and InferenceSession, loads the KV manager. + + Args: + session: Inference session to compile and init the KV cache. + available_cache_memory: Amount of memory available to the KV cache, + in bytes. + + Returns: + Either a single KV cache manager or a tuple of KV cache managers: + one per input modality. + """ + ... + + @classmethod + @abstractmethod + def estimate_kv_cache_size( + cls, + pipeline_config: PipelineConfig, + available_cache_memory: int, + devices: list[Device], + ) -> int: + """Estimates the size of the kv cache in bytes.""" + ... + + +class TextGenerationPipeline(TokenGenerator[T]): + """Generalized token generator pipeline.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + pipeline_model: Type[PipelineModel], + # TODO: This should be removed. + eos_token_id: int, + ) -> None: + self._pipeline_config = pipeline_config + + # Expand eos tokens if more are provided in pipeline_config + if "eos_token_id" in pipeline_config.huggingface_config: + eos_tokens = pipeline_config.huggingface_config.eos_token_id + if isinstance(eos_tokens, int): + if eos_tokens != eos_token_id: + msg = f"eos_token_id provided in huggingface config ({eos_tokens}), does not match provided eos_token_id ({eos_token_id}), using provided eos_token_id" + logger.warning(msg) + + self._eos_token_id = set([eos_tokens]) + elif isinstance(eos_tokens, list): + if eos_token_id in eos_tokens: + self._eos_token_id = set(eos_tokens) + else: + self._eos_token_id = set([eos_token_id]) + else: + msg = f"eos_token_id in huggingface_config, is neither int or list: {eos_tokens}" + logger.warning(msg) + self._eos_token_id = set([eos_token_id]) + + else: + self._eos_token_id = set([eos_token_id]) + + # Create a grammar compiler if constrained decoding is enabled + self.vocab_size = None + if pipeline_config.enable_structured_output: + tokenizer = AutoTokenizer.from_pretrained( + pipeline_config.model_path + ) + self.vocab_size = len(tokenizer) + tokenizer_info = xgr.TokenizerInfo.from_huggingface( + tokenizer, + vocab_size=self.vocab_size, + ) + + self._grammar_compiler = xgr.GrammarCompiler(tokenizer_info) + + # Initialize Session. + session = InferenceSession(devices=self._pipeline_config.devices) + + # Enable profiling if enabled. + session.gpu_profiling(self._pipeline_config.gpu_profiling) + + # Use experimental kernels if enabled by env var `USE_EXPERIMENTAL_KERNELS`. + session._use_experimental_kernels( + self._pipeline_config.use_experimental_kernels + ) + + # Load model. + self._pipeline_model = pipeline_model( + pipeline_config=self._pipeline_config, session=session + ) + + # Load sampler. + self._sampler = session.load( + token_sampler(self._pipeline_config.sampling_params), + ) + + def calculate_num_steps( + self, + num_steps: int, + context: T, + ) -> int: + max_seq_len = self._pipeline_model.calculate_max_seq_len( + self._pipeline_config + ) + # this is effectively: max_seq_len - (num_tokens_in_kv_cache + num_new_tokens) - num_new_tokens + num_available_steps = max_seq_len - ( + context.current_length - context.active_length + ) + if num_available_steps <= 0: + raise ValueError( + f"Request {context.cache_seq_id} length ({context.current_length}) is larger than or equal to the configured max_length ({max_seq_len})" + ) + + return ( + num_steps + if num_available_steps > num_steps + else num_available_steps + ) + + @traced + def prepare_batch( + self, + batch: list[T], + num_steps: int, + ) -> tuple[ModelInputs, int, Optional[torch.Tensor]]: + tracer: Tracer = Tracer("prepare_batch") + + if self._pipeline_config.enable_structured_output: + assert self.vocab_size is not None + bitmask = torch.ones( + xgr.get_bitmask_shape( + len(batch), + self.vocab_size, + ), + dtype=torch.int32, + ) + else: + bitmask = None + + seq_ids_and_prompts = {} + seq_ids_and_untrimmed_lengths = {} + tracer.next("claim_cache_rows") + for i, context in enumerate(batch): + # Initialize a matcher if needed + if context.json_schema and context.matcher is None: + if not self._pipeline_config.enable_structured_output: + msg = "json_schema provided but constrained decoding is not enabled." + raise ValueError(msg) + + try: + compiled_grammar = ( + self._grammar_compiler.compile_json_schema( + context.json_schema, + any_whitespace=False, + ) + ) + matcher = xgr.GrammarMatcher(compiled_grammar) + context.set_matcher(matcher) + except Exception as e: + msg = f"Json schema provided in request cannot be compiled to valid grammar. \ + Please update your json schema to produce valid structured output. From XGrammar: {e}" + logger.warning(msg) + # I am removing the json_schema, so it doesn't try to load the grammar repeatedly. + context.json_schema = None # type: ignore + + # Claim cache rows for context. + if not self._pipeline_model.kv_manager.contains( + context.cache_seq_id + ): + self._pipeline_model.kv_manager.external_claim( + [context.cache_seq_id] + ) + + # Gather tokens and untrimmed lengths. + seq_ids_and_prompts[context.cache_seq_id] = context.next_tokens + seq_ids_and_untrimmed_lengths[context.cache_seq_id] = ( + context.active_length + ) + + # Update num_steps. + num_steps = self.calculate_num_steps(num_steps, context) + + # Update bitmask + if ( + self._pipeline_config.enable_structured_output + and context.matcher + ): + context.matcher.fill_next_token_bitmask(bitmask, index=i) + + # `fetch` mutates the seq_ids_and_prompts input in place when tokens are + # retrieved from the cache. This shortens the prompt in the event that + # some tokens have backing KV cache entries. + tracer.next("fetch_kv_cache") + kv_cache_inputs = self._pipeline_model.kv_manager.fetch( + seq_ids_and_prompts, num_steps + ) + + # Update the context with the new possibly shortened prompt. + tracer.next("trim_prompt") + for context in batch: + untrimmed_length = seq_ids_and_untrimmed_lengths[ + context.cache_seq_id + ] + trimmed_length = len(seq_ids_and_prompts[context.cache_seq_id]) + bump_length = untrimmed_length - trimmed_length + if bump_length > 0: + context.bump_token_indices( + start_idx=bump_length, + ) + + return ( + self._pipeline_model.prepare_initial_token_inputs( + context_batch=batch, + kv_cache_inputs=KVCacheInputsSequence( + kv_cache_inputs=kv_cache_inputs + ), + ), + num_steps, + bitmask, + ) + + @traced + def sample_logits( + self, + logits: Tensor, + prev_tokens: Tensor, + bitmask: Optional[Tensor], + ) -> tuple[Tensor, Tensor]: + if bitmask is not None: + a, b = self._sampler(logits, prev_tokens, bitmask)[:2] + else: + a, b = self._sampler( + logits, + prev_tokens, + )[:2] + assert isinstance(a, Tensor) + assert isinstance(b, Tensor) + return (a, b) + + @traced + def next_token( + self, + batch: dict[str, T], + num_steps: int, + ) -> dict[str, TextGenerationResponse]: + """Provided a batch, process batch inputs, execute the graph for num_steps in a multi-step scenario, + then decode the tokens holistically and return the list of decoded tokens. + """ + tracer: Tracer = Tracer("compute_parameters") + + # Flatten our batch for consistent indexing. + context_batch = list(batch.values()) + + # # Get extra compute parameters for each input. + batch_top_n = [context.log_probabilities for context in context_batch] + compute_log_probabilities = any(batch_top_n) + batch_echo: list[bool] = [ + context.log_probabilities_echo for context in context_batch + ] + + # Prepare the batch. + model_inputs, num_steps, bitmask = self.prepare_batch( + context_batch, num_steps + ) + + # Multistep execution loop. + tracer.next("allocate_generated_tokens") + generated_tokens = Tensor.zeros( + (len(context_batch), 0), + dtype=DType.int64, + device=self._pipeline_config.devices[0], + ) + + curr_step_inputs = model_inputs + batch_log_probabilities = [] + tracer.next(f"multistep_execution_loop_{num_steps}_steps") + for i in range(num_steps): + tracer.push(f"step_{i}") + + # Execute the model and get next tokens. + model_outputs = self._pipeline_model.execute( + model_inputs=curr_step_inputs, + ) + assert model_outputs.next_token_logits is not None + next_token_logits = model_outputs.next_token_logits + + if bitmask is not None: + assert self.vocab_size is not None + bits = 2 ** torch.arange(32, dtype=torch.int32) + bitmask = (bitmask.unsqueeze(-1) & bits) != 0 + bitmask = bitmask.reshape( + len(context_batch), + -1, + ).to(torch.bool) + bitmask = bitmask[:, 0 : self.vocab_size] + + bitmask = Tensor.from_dlpack(bitmask).to( + self._pipeline_config.devices[0] + ) + + # Sample next token. + tracer.next("sample_next_token") + new_tokens, new_generated_tokens = self.sample_logits( + next_token_logits, + generated_tokens, + bitmask, + ) + + assert isinstance(new_tokens, Tensor) + assert isinstance(new_generated_tokens, Tensor) + generated_tokens = new_generated_tokens + + if compute_log_probabilities: + try: + tracer.next("compute_log_probabilities") + batch_log_probabilities.append( + self._pipeline_model.compute_log_probabilities( + curr_step_inputs, + model_outputs, + new_tokens, + batch_top_n, + batch_echo, + ) + ) + except NotImplementedError: + logger.warning( + "Unable to compute log probabilities for" + f" {self._pipeline_config.model_path}" + ) + batch_log_probabilities.append(None) + # Check if we're on our last iteration. If so, skip preparing the next batch + if i == num_steps - 1: + tracer.pop() # pops f"step_{i}" + break + # Prepare inputs for the next token in multistep execution + tracer.next("increment_cache_lengths") # pops sample_next_token + + assert isinstance( + curr_step_inputs.kv_cache_inputs, KVCacheInputsSequence + ), ( + "prepare_batch instantiates and passes this as a KVCacheInputsSequence" + ) + assert isinstance( + curr_step_inputs.kv_cache_inputs.kv_cache_inputs, list + ), "increment_cache_lengths instantiates and passes this as a list" + curr_step_inputs.kv_cache_inputs.kv_cache_inputs = ( + self._pipeline_model.kv_manager.increment_cache_lengths( + curr_step_inputs.kv_cache_inputs.kv_cache_inputs, + curr_step_inputs, + ) + ) + + tracer.next("prepare_next_token_inputs") # pops inc_cache_lengths + curr_step_inputs = self._pipeline_model.prepare_next_token_inputs( + new_tokens, curr_step_inputs + ) + tracer.pop() # pops step_{i} + + # Do the copy to host for each token generated. + tracer.next( + "generated_tokens.to(CPU())" + ) # pops multistep_execution_loop_steps + generated_tokens_host = generated_tokens.to_numpy() + + # Actually update the cache lengths in our kv_cache manager + tracer.next("kv_manager.step") # pops generated_tokens.to(CPU()) + seq_ids_and_new_tokens = { + ctx.cache_seq_id: generated_tokens_host[i] + for i, ctx in enumerate(context_batch) + } + self._pipeline_model.kv_manager.step(seq_ids_and_new_tokens) + tracer.pop() # pops kv_manager.step + + # Prepare the response, pruning away completed requests as we go. + res: dict[str, TextGenerationResponse] = {} + tracer.push("prepare_response") + for batch_index, (request_id, context) in enumerate(batch.items()): + status = TextGenerationStatus.ACTIVE + res[request_id] = TextGenerationResponse([], status) + for step in range(num_steps): + # Convert to a Python scalar to improve serialization performance. + next_token = int(generated_tokens_host[batch_index, step]) + + # Write this token into our pre-allocated tokens array. + context.update( + new_token=next_token, + ) + + max_length = upper_bounded_default( + upper_bound=self._pipeline_model.calculate_max_seq_len( + self._pipeline_config + ), + default=context.max_length, + ) + + # Set up TextResponse + log_probs: Optional[LogProbabilities] = None + if compute_log_probabilities and ( + log_probs_for_step := batch_log_probabilities[step] + ): + log_probs = log_probs_for_step[batch_index] + + # Update status + # If its eos, dont add it to the token array. + if next_token in self._eos_token_id: + status = TextGenerationStatus.END_OF_SEQUENCE + res[request_id].update_status(status) + elif context.current_length == max_length: + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].append_token( + TextResponse(next_token, log_probs) + ) + res[request_id].update_status(status) + # This practically, should not be hit, as once the context object + # reaches the max_length, we should break from this current loop. + # TODO: Explore cleaning up max length checks. + elif context.current_length > max_length: + status = TextGenerationStatus.MAXIMUM_LENGTH + res[request_id].update_status(status) + else: + res[request_id].append_token( + TextResponse(next_token, log_probs) + ) + + if status.is_done: + break + + return res + + def release(self, context: T) -> None: + """Mark the context as complete, releasing the cache slot from the KV manager.""" + self._pipeline_model.kv_manager.release(context.cache_seq_id) diff --git a/src/max/pipelines/registry.py b/src/max/pipelines/registry.py new file mode 100644 index 0000000000..1f8149e0fa --- /dev/null +++ b/src/max/pipelines/registry.py @@ -0,0 +1,1072 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Model registry, for tracking various model variants.""" + +from __future__ import annotations + +import functools +import logging +import os +from io import StringIO +from typing import Callable, Optional, Type, Union, cast + +import torch +from max.graph.weights import WeightsAdapter +from max.support.human_readable_formatter import to_human_readable_bytes + +from .config import ( + PipelineConfig, + PipelineEngine, + RopeType, + SupportedEncoding, + WeightsFormat, +) +from .embeddings_pipeline import EmbeddingsPipeline +from .hf_pipeline import HFEmbeddingsPipeline, HFTextGenerationPipeline +from .interfaces import ( + EmbeddingsGenerator, + PipelineTask, + PipelineTokenizer, + TokenGenerator, +) +from .kv_cache import KVCacheStrategy +from .pipeline import KVCacheMixin, PipelineModel, TextGenerationPipeline +from .speculative_decoding import SpeculativeDecodingTextGenerationPipeline +from .tokenizer import TextAndVisionTokenizer, TextTokenizer + +logger = logging.getLogger("max.pipelines") + +# Store a map of checkpoint encodings that can be cast to another dtype while +# keeping similar results. Maps the requested encoding to an acceptable +# alternate checkpoint encoding. +_ALTERNATE_ENCODINGS = { + SupportedEncoding.float32: SupportedEncoding.bfloat16, + SupportedEncoding.bfloat16: SupportedEncoding.float32, +} + + +def get_pipeline_for_task( + task: PipelineTask, pipeline_config: PipelineConfig +) -> ( + type[TextGenerationPipeline] + | type[EmbeddingsPipeline] + | type[SpeculativeDecodingTextGenerationPipeline] +): + if task == PipelineTask.TEXT_GENERATION: + if pipeline_config.draft_model is not None: + return SpeculativeDecodingTextGenerationPipeline + else: + return TextGenerationPipeline + elif task == PipelineTask.EMBEDDINGS_GENERATION: + return EmbeddingsPipeline + else: + msg = f"PipelineTask ({task}) does not have supported Pipeline" + raise ValueError(msg) + + +_HF_PIPELINE_TASK_MAP: dict[ + PipelineTask, type[HFTextGenerationPipeline] | type[HFEmbeddingsPipeline] +] = { + PipelineTask.TEXT_GENERATION: HFTextGenerationPipeline, + PipelineTask.EMBEDDINGS_GENERATION: HFEmbeddingsPipeline, +} + + +class SupportedArchitecture: + def __init__( + self, + name: str, + example_repo_ids: list[str], + default_encoding: SupportedEncoding, + supported_encodings: dict[SupportedEncoding, list[KVCacheStrategy]], + pipeline_model: Type[PipelineModel], + task: PipelineTask, + tokenizer: Type[Union[TextTokenizer, TextAndVisionTokenizer]], + default_weights_format: WeightsFormat, + rope_type: RopeType = RopeType.none, + weight_adapters: dict[WeightsFormat, WeightsAdapter] | None = None, + ): + """Initializes a model architecture supported by MAX pipelines. + + New architectures should be registered into the `PipelineRegistry`. + + args: + name: Architecture name. + example_repo_ids: HuggingFace repo_id which runs this architecture. + default_encoding: Default encoding for the model. + supported_encodings: Alternate encodings supported. + pipeline_model: PipelineModel class that defines the model graph + and execution. + task: Which pipeline task should the model run with. + tokenizer: Tokenizer used to preprocess model inputs. + default_weights_format: The weights format used in `pipeline_model`. + weight_converters: A dictionary of weight loaders to use if the + input checkpoint has a different format than the default. + """ + self.name = name + self.example_repo_ids = example_repo_ids + self.default_encoding = default_encoding + self.supported_encodings = supported_encodings + self.pipeline_model = pipeline_model + self.tokenizer = tokenizer + self.default_weights_format = default_weights_format + self.rope_type = rope_type + self.weight_adapters = weight_adapters or {} + self.task = task + + +class PipelineRegistry: + def __init__(self, architectures: list[SupportedArchitecture]): + self.architectures = {arch.name: arch for arch in architectures} + + def register(self, architecture: SupportedArchitecture): + """Add new architecture to registry.""" + if architecture.name in self.architectures: + msg = f"Refusing to override existing architecture for '{architecture.name}'" + raise ValueError(msg) + + self.architectures[architecture.name] = architecture + + def architecture_details( + self, pipeline_config: PipelineConfig + ) -> Optional[SupportedArchitecture]: + """Return architecture details for pipeline_config if available, None if not found.""" + + # If no architecture is provided in the pipeline_config, we have nothing to retrieve. + if not pipeline_config.architecture: + return None + + # If the engine is not provided or MAX, we should retrieve the architecture and validate it. + if ( + not pipeline_config.engine + or pipeline_config.engine == PipelineEngine.MAX + ): + if pipeline_config.architecture in self.architectures: + return self.architectures[pipeline_config.architecture] + else: + return None + else: + return None + + def _validate_pipeline_config_for_speculative_decoding( + self, pipeline_config: PipelineConfig + ) -> None: + # When `draft_model` is not provided, speculative decoding is disabled. + if not pipeline_config.draft_model: + return None + + # Assume `draft_model` is provided, and thus speculative decoding is enabled. + # We don't support running speculative decoding with the HuggingFace backend. + if pipeline_config.engine == PipelineEngine.HUGGINGFACE: + msg = ( + "Speculative Decoding not supported with the HuggingFace Engine" + ) + raise ValueError(msg) + + def validate_pipeline_config( + self, pipeline_config: PipelineConfig + ) -> PipelineConfig: + # Run Baseline Validation + pipeline_config = self._validate_pipeline_config(pipeline_config) + + # Run Additional Checks for Speculative Decoding + self._validate_pipeline_config_for_speculative_decoding(pipeline_config) + + return pipeline_config + + def _validate_pipeline_config( + self, pipeline_config: PipelineConfig + ) -> PipelineConfig: + """Update pipeline config with appropriate values if not provided. + If invalid config is provided, error out with detailed reason.""" + + # This will update the architecture, and engine if no architecture is available. + pipeline_config.update_architecture() + + # This will retrieve the architecture, if we support it. + arch = self.architecture_details(pipeline_config) + + # If nothing is provided, we should not update any more params. + # Instead, fall back to the HuggingFace engine. + if not arch and pipeline_config.engine == PipelineEngine.MAX: + msg = ( + "optimized architecture not available for" + f" '{pipeline_config.architecture}', failing as engine is provided as 'MAX'" + ) + raise ValueError(msg) + + elif not arch: + msg = ( + "optimized architecture not available for" + f" '{pipeline_config.architecture}' falling back to" + " HuggingFace." + ) + logger.warning(msg) + pipeline_config.engine = PipelineEngine.HUGGINGFACE + return pipeline_config + + # The remainder of this function, assumes we have both a valid model_path, + # and a SupportedArchitecture. We should then validate the details of the existing architecture + # and fallback to HuggingFace if needed. + + # If weight_path and quantization_encoding are provided, verify that they are consistent. + huggingface_weights_repo = pipeline_config.huggingface_weights_repo() + if ( + pipeline_config.weight_path + and pipeline_config.quantization_encoding + # Cannot validate quantization_encoding for pytorch. + and pipeline_config.weights_format != WeightsFormat.pytorch + ): + # Get the encoding of the first weight path file. + if os.path.exists(pipeline_config.weight_path[0]): + file_encoding = SupportedEncoding.parse_from_file_name( + str(pipeline_config.weight_path[0]) + ) + else: + file_encoding = huggingface_weights_repo.encoding_for_file( + pipeline_config.weight_path[0] + ) + + if file_encoding: + if file_encoding != pipeline_config.quantization_encoding: + msg = f"weight_path provided '{pipeline_config.weight_path[0]}' has an inconsistent encoding '{file_encoding}' than quantization_encoding provided '{pipeline_config.quantization_encoding}'. Please update one." + raise ValueError(msg) + # If weight path is not None, infer the quantization_encoding from the weight_path. + elif ( + pipeline_config.weight_path + and not pipeline_config.quantization_encoding + and pipeline_config.weights_format != WeightsFormat.pytorch + ): + if os.path.exists(pipeline_config.weight_path[0]): + # Not currently supported. Infer encoding from local path. + if pipeline_config.weight_path[0].suffix == ".safetensors": + msg = "If a local safetensors file is provided, please provide a quantization_encoding." + raise ValueError(msg) + + if encoding := SupportedEncoding.parse_from_file_name( + str(pipeline_config.weight_path[0]) + ): + msg = f"encoding inferred from weights file: {encoding}" + logger.debug(msg) + pipeline_config.quantization_encoding = encoding + + else: + if encoding := huggingface_weights_repo.encoding_for_file( + pipeline_config.weight_path[0] + ): + msg = f"encoding inferred from weights file: {encoding}" + logger.debug(msg) + pipeline_config.quantization_encoding = encoding + else: + msg = f"encoding cannot be inferred from weights file: {pipeline_config.weight_path[0]}, please pass a quantization_encoding explictly." + raise ValueError(msg) + elif not pipeline_config.quantization_encoding: + # Check if the repo only has one quantization_encoding. + supported_encodings = huggingface_weights_repo.supported_encodings + if len(supported_encodings) == 1: + msg = f"huggingface repo only has '{supported_encodings[0]}' weights, using '{supported_encodings[0]}'" + logger.debug(msg) + pipeline_config.quantization_encoding = supported_encodings[0] + elif ( + not pipeline_config.devices[0].is_host + ) and SupportedEncoding.bfloat16 in arch.supported_encodings: + # TODO(AITLIB-137): replace this with more full featured logic. + # If we are running on an accelerator and the quantiziation encoding is not set, override to bfloat16. + pipeline_config.quantization_encoding = ( + SupportedEncoding.bfloat16 + ) + else: + msg = f"encoding not provided, using default encoding of {arch.default_encoding}" + logger.debug(msg) + pipeline_config.quantization_encoding = arch.default_encoding + # by this point, the quantization_encoding must be provided. verify it is supported. + if ( + pipeline_config.quantization_encoding + not in arch.supported_encodings + ): + if pipeline_config.engine == PipelineEngine.MAX: + msg = f"quantization_encoding of '{pipeline_config.quantization_encoding}' not supported by MAX engine, unable to run with engine = 'max'." + raise ValueError(msg) + + else: + msg = f"quantization_encoding of '{pipeline_config.quantization_encoding}' not supported by MAX engine, falling back to HuggingFace." + logger.warning(msg) + pipeline_config.engine = PipelineEngine.HUGGINGFACE + return pipeline_config + + # Check that the quantization encoding is supported on the specified + # devices. + for device_spec in pipeline_config.device_specs: + if not pipeline_config.quantization_encoding.supported_on( + device_spec + ): + raise ValueError( + f"{pipeline_config.quantization_encoding} is not supported on {device_spec.device_type}. " + "Please use the flag --devices=cpu or --devices=gpu to configure the device." + ) + + pipeline_config.finalize_encoding_config() + + # Pass weight adapters to the PipelineConfig. + pipeline_config._weight_adapters = arch.weight_adapters + + # We should now have a valid quantization_encoding, and possibly a weight_path. + # If no weight_path is provided, we should grab the default. + if not pipeline_config.weight_path: + # Retrieve the default files for each weights format. + + # Get alternate encoding (e.g. if float32 is requested and there are + # only bfloat16 weights, allow retrieving the bfloat16 weights + # because they can be cast to float32). + alternate_encoding = _ALTERNATE_ENCODINGS.get( + pipeline_config.quantization_encoding + ) + + weight_files = huggingface_weights_repo.files_for_encoding( + encoding=pipeline_config.quantization_encoding, + alternate_encoding=alternate_encoding, + ) + + if default_weight_files := weight_files.get( + arch.default_weights_format, [] + ): + pipeline_config.weight_path = default_weight_files + elif weight_files: + # Load any available weight file. + pipeline_config.weight_path = next(iter(weight_files.values())) + + if not pipeline_config.weight_path: + if pipeline_config.quantization_encoding not in [ + SupportedEncoding.bfloat16, + SupportedEncoding.float32, + ]: + msg = f"compatible weights cannot be found for '{pipeline_config.quantization_encoding}' in 'gguf' format, in the provided repo: '{huggingface_weights_repo.repo_id}'" + raise ValueError(msg) + else: + msg = f"compatible weights cannot be found for '{pipeline_config.quantization_encoding}'" + raise ValueError(msg) + + # Check supported_cache_strategy + supported_cache_strategies = arch.supported_encodings.get( + pipeline_config.quantization_encoding, [] + ) + if ( + pipeline_config.cache_strategy == KVCacheStrategy.MODEL_DEFAULT + and supported_cache_strategies + ): + default_strategy = supported_cache_strategies[0] + msg = f"default cache_strategy of '{default_strategy}' enabled" + logger.debug(msg) + + pipeline_config.cache_strategy = default_strategy + elif ( + supported_cache_strategies + and pipeline_config.cache_strategy not in supported_cache_strategies + ): + supported_strategy = supported_cache_strategies[0] + + msg = f"cache_strategy = '{pipeline_config.cache_strategy}' not supported for '{pipeline_config.quantization_encoding}', using '{supported_strategy}' cache strategy." + logger.warning(msg) + + pipeline_config.cache_strategy = supported_strategy + + # Assume at this point, an architecture, + # a model_path and weight_paths are available. + assert pipeline_config.weight_path, "weight_path must be provided." + for path in pipeline_config.weight_path: + # Check if file exists locally. + if not os.path.exists(path): + # If does not exist locally, verify that it exists on Huggingface. + if not huggingface_weights_repo.file_exists(str(path)): + msg = ( + f"weight_path: '{path}' does not exist locally, and" + f" '{pipeline_config.model_path}/{path}' does" + " not exist on HuggingFace." + ) + raise ValueError(msg) + + if pipeline_config.rope_type is None: + pipeline_config.rope_type = arch.rope_type + + self._estimate_memory_footprint(pipeline_config, arch) + + # If we pass validation ensure, the engine is set as MAX. + pipeline_config.engine = PipelineEngine.MAX + return pipeline_config + + def _estimate_memory_footprint( + self, + pipeline_config: PipelineConfig, + arch: SupportedArchitecture, + ): + model_cls = arch.pipeline_model + + try: + free_memory = int( + sum(d.stats["free_memory"] for d in pipeline_config.devices) + ) + except Exception as e: + logger.warning( + "Unable to estimate memory footprint of model, can't query device stats: " + + str(e) + ) + if not pipeline_config.max_batch_size: + pipeline_config.max_batch_size = 1 + if not pipeline_config.max_length: + pipeline_config.max_length = model_cls.calculate_max_seq_len( + pipeline_config + ) + return + + model_weights_size = model_cls.estimate_weights_size(pipeline_config) + + total_size = model_weights_size + available_kv_cache_memory = max(0, free_memory - model_weights_size) + available_kv_cache_memory = int( + available_kv_cache_memory + * pipeline_config.device_memory_utilization + ) + + user_provided_max_length = pipeline_config.max_length is not None + user_provided_max_batch_size = ( + pipeline_config.max_batch_size is not None + ) + if not user_provided_max_length: + pipeline_config.max_length = model_cls.calculate_max_seq_len( + pipeline_config + ) + + if not user_provided_max_batch_size: + pipeline_config.max_batch_size = self._infer_optimal_batch_size( + pipeline_config, model_cls, available_kv_cache_memory + ) + + actual_kv_cache_size = self._calculate_kv_cache_size( + model_cls, + pipeline_config, + available_kv_cache_memory, + ) + + pipeline_config._available_cache_memory = actual_kv_cache_size + + total_size += actual_kv_cache_size + + # If the model is too large to fit in memory, and the user did not + # specify a max_length, try to infer a value that would fit. + if total_size > free_memory and not user_provided_max_length: + original_max_length = pipeline_config.max_length + ( + found_valid_max_length, + inferred_max_length, + _, + ) = self._find_valid_max_length( + pipeline_config, + model_cls, + available_kv_cache_memory, + user_provided_max_batch_size, + ) + + if found_valid_max_length: + logger.warning( + f"Truncated model's default max_length from {original_max_length} to {inferred_max_length} to fit in memory." + ) + pipeline_config.max_length = inferred_max_length + actual_kv_cache_size = self._calculate_kv_cache_size( + model_cls, + pipeline_config, + available_kv_cache_memory, + ) + total_size = model_weights_size + actual_kv_cache_size + + if free_memory: + free_memory_str = f" / {to_human_readable_bytes(free_memory)} free" + + weights_str = "" + if model_weights_size: + weights_str = f"\n\t Weights: {to_human_readable_bytes(model_weights_size)}" + + if not user_provided_max_length: + max_length_str = f"Auto-inferred max sequence length: {pipeline_config.max_length}" + else: + max_length_str = ( + f"Current max sequence length: {pipeline_config.max_length}" + ) + + if not user_provided_max_batch_size: + max_batch_size_str = f"Auto-inferred max batch size: {pipeline_config.max_batch_size}" + else: + max_batch_size_str = ( + f"Current max batch size: {pipeline_config.max_batch_size}" + ) + + logging_str = ( + "\n" + f"\n\tEstimated memory consumption:" + f"{weights_str}" + f"\n\t KVCache allocation: {to_human_readable_bytes(actual_kv_cache_size)}" + f"\n\t Total estimated: {to_human_readable_bytes(model_weights_size + actual_kv_cache_size)} used{free_memory_str}" + f"\n\t{max_length_str}" + f"\n\t{max_batch_size_str}\n" + ) + logger.info(logging_str) + vram_usage_limit_scale = 0.95 + + if isinstance(free_memory, (int, float)): + if total_size > free_memory: + self._raise_oom_error( + pipeline_config, + user_provided_max_length, + user_provided_max_batch_size, + model_cls, + total_size, + free_memory, + available_kv_cache_memory, + model_weights_size, + ) + + elif total_size > vram_usage_limit_scale * free_memory: + logger.warning( + "Estimated model and kv cache memory use nears available memory. You may experience errors." + ) + + def _raise_oom_error( + self, + pipeline_config: PipelineConfig, + user_provided_max_length: bool, + user_provided_max_batch_size: bool, + model_cls: Type[PipelineModel], + total_size: int, + original_free_memory: int, + available_kv_cache_memory: int, + weights_size: int, + ) -> None: + """If we've determined the current configuration won't fit in device memory, + this method provides a friendly error message suggesting a viable configuration. + + The approach is to: + 1. Binary search max_length until we find a setting that works + 2. If user provided max_batch_size, binary search that too + 3. Generate appropriate suggestions based on this truth table: + + max_length + +----------------------+--------------------------+ + | set by user | set to default | + +----------------+======================+==========================+ + | set by user ║ Recommend both | Recommend max_batch_size | + max_batch_size +----------------+----------------------+--------------------------+ + | set to default ║ Recommend max_length | Recommend both | + +----------------+----------------------+--------------------------+ + """ + if weights_size > original_free_memory: + raise RuntimeError( + "Weights size exceeds available memory. Try running a smaller model, using a smaller precision, or using a device with more memory." + ) + + original_max_length = cast(int, pipeline_config.max_length) + original_max_batch_size = cast(int, pipeline_config.max_batch_size) + + # Find valid configurations through binary search + ( + found_valid_max_length, + inferred_max_length, + inferred_max_length_compatible_batch_size, + ) = self._find_valid_max_length( + pipeline_config, + model_cls, + available_kv_cache_memory, + user_provided_max_batch_size, + ) + + pipeline_config.max_batch_size = original_max_batch_size + + found_valid_max_batch_size, inferred_max_batch_size = ( + self._find_valid_batch_size( + pipeline_config, + model_cls, + available_kv_cache_memory, + original_max_length, + user_provided_max_batch_size, + ) + ) + + # Generate error message with suggestions + error_msg = self._generate_oom_error_message( + total_size=total_size, + original_free_memory=original_free_memory, + user_provided_max_length=user_provided_max_length, + user_provided_max_batch_size=user_provided_max_batch_size, + found_valid_max_length=found_valid_max_length, + found_valid_max_batch_size=found_valid_max_batch_size, + inferred_max_length=inferred_max_length, + inferred_max_batch_size=inferred_max_batch_size, + inferred_max_length_compatible_batch_size=inferred_max_length_compatible_batch_size, + original_max_length=original_max_length, + ) + + raise RuntimeError(error_msg) + + def _find_valid_max_length( + self, + pipeline_config: PipelineConfig, + model_cls: Type[PipelineModel], + available_kv_cache_memory: int, + user_provided_max_batch_size: bool, + ) -> tuple[bool, int, int]: + """Binary search to find a valid max_length configuration. + + Returns: + Tuple containing: + - found_valid_max_length: Whether a valid max_length was found + - inferred_max_length: The suggested max_length value + - inferred_max_length_compatible_batch_size: Compatible batch size for the max_length + """ + assert pipeline_config.max_length is not None + assert pipeline_config.max_batch_size is not None + + found_valid_max_length = False + lower = 1 + upper = pipeline_config.max_length + inferred_max_length = upper + + while not found_valid_max_length: + inferred_max_length = (lower + upper) // 2 + pipeline_config.max_length = inferred_max_length + + if not user_provided_max_batch_size: + pipeline_config.max_batch_size = self._infer_optimal_batch_size( + pipeline_config, model_cls, available_kv_cache_memory + ) + + kv_cache_size = self._calculate_kv_cache_size( + model_cls, pipeline_config, available_kv_cache_memory + ) + + if lower > upper: + break + elif upper - lower <= 1: + if kv_cache_size <= available_kv_cache_memory: + found_valid_max_length = True + break + + if kv_cache_size > available_kv_cache_memory: + upper = inferred_max_length - 1 + else: + lower = inferred_max_length + return ( + found_valid_max_length, + inferred_max_length, + pipeline_config.max_batch_size, + ) + + def _find_valid_batch_size( + self, + pipeline_config: PipelineConfig, + model_cls: Type[PipelineModel], + available_kv_cache_memory: int, + original_max_length: int, + user_provided_max_batch_size: bool, + ) -> tuple[bool, int]: + """Binary search to find a valid batch size configuration. + + Returns: + Tuple containing: + - found_valid_max_batch_size: Whether a valid batch size was found + - inferred_max_batch_size: The suggested batch size value. + If the user did not provide a batch size, this will be -1. + """ + if not user_provided_max_batch_size: + return False, -1 + + found_valid_max_batch_size = False + pipeline_config.max_length = original_max_length + inferred_max_batch_size = cast(int, pipeline_config.max_batch_size) + lower = 1 + upper = cast(int, pipeline_config.max_batch_size) + + while not found_valid_max_batch_size: + inferred_max_batch_size = (lower + upper) // 2 + pipeline_config.max_batch_size = inferred_max_batch_size + + kv_cache_size = self._calculate_kv_cache_size( + model_cls, pipeline_config, available_kv_cache_memory + ) + + if lower > upper: + break + elif upper - lower <= 1: + if kv_cache_size <= available_kv_cache_memory: + found_valid_max_batch_size = True + break + + if kv_cache_size > available_kv_cache_memory: + upper = inferred_max_batch_size - 1 + else: + lower = inferred_max_batch_size + + return found_valid_max_batch_size, inferred_max_batch_size + + def _calculate_kv_cache_size( + self, + model_cls: Type[PipelineModel], + pipeline_config: PipelineConfig, + available_kv_cache_memory: int, + ) -> int: + """Calculate the KV cache size for the current configuration.""" + if issubclass(model_cls, KVCacheMixin): + return model_cls.estimate_kv_cache_size( + pipeline_config=pipeline_config, + available_cache_memory=available_kv_cache_memory, + devices=pipeline_config.devices, + ) + return 0 + + def _generate_oom_error_message( + self, + total_size: int, + original_free_memory: int, + user_provided_max_length: bool, + user_provided_max_batch_size: bool, + found_valid_max_length: bool, + found_valid_max_batch_size: bool, + inferred_max_length: int, + inferred_max_batch_size: int, + inferred_max_length_compatible_batch_size: int, + original_max_length: int, + ) -> str: + """Generate an appropriate error message based on the configuration state.""" + free_memory_str = ( + f" / {to_human_readable_bytes(original_free_memory)} free" + if original_free_memory + else "" + ) + + msg = StringIO() + msg.write( + f"Estimated model and kv cache memory use exceeds available memory ({to_human_readable_bytes(total_size)} {free_memory_str}). Try " + ) + + if not found_valid_max_length and not found_valid_max_batch_size: + msg.write( + "reducing --max-length or --max-batch-size, finding a smaller model, or using a device with more memory." + ) + + elif user_provided_max_length: + self._add_user_provided_max_length_suggestions( + msg, + user_provided_max_batch_size, + found_valid_max_length, + found_valid_max_batch_size, + inferred_max_length, + inferred_max_batch_size, + inferred_max_length_compatible_batch_size, + ) + else: + self._add_default_max_length_suggestions( + msg, + user_provided_max_batch_size, + found_valid_max_length, + found_valid_max_batch_size, + inferred_max_length, + inferred_max_batch_size, + inferred_max_length_compatible_batch_size, + original_max_length, + ) + + msg.write(".") + return msg.getvalue() + + def _add_user_provided_max_length_suggestions( + self, + msg: StringIO, + user_provided_max_batch_size: bool, + found_valid_max_length: bool, + found_valid_max_batch_size: bool, + inferred_max_length: int, + inferred_max_batch_size: int, + inferred_max_length_compatible_batch_size: int, + ) -> None: + """Add error message suggestions when user provided max_length. + + This handles the top row of the truth table from the _raise_oom_error docstring. + + Args: + msg: StringIO buffer to write message to + user_provided_max_batch_size: Whether user provided batch size + found_valid_max_length: Whether valid max_length was found + found_valid_max_batch_size: Whether valid batch size was found + inferred_max_length: Suggested max_length value + inferred_max_batch_size: Suggested batch size value + inferred_max_length_compatible_batch_size: Compatible batch size for max_length + """ + if not user_provided_max_batch_size: + if found_valid_max_length: + msg.write( + f"reducing --max-length to {inferred_max_length} " + f"(supports batch size of {inferred_max_length_compatible_batch_size})" + ) + else: + msg.write("reducing --max-length or --max-batch-size") + else: + if found_valid_max_length: + msg.write( + f"reducing --max-length to {inferred_max_length} and " + f"--max-batch-size to {inferred_max_length_compatible_batch_size})" + ) + + if found_valid_max_batch_size: + if found_valid_max_length: + msg.write(" or ") + msg.write( + f"reducing --max-batch-size to {inferred_max_batch_size}" + ) + + def _add_default_max_length_suggestions( + self, + msg: StringIO, + user_provided_max_batch_size: bool, + found_valid_max_length: bool, + found_valid_max_batch_size: bool, + inferred_max_length: int, + inferred_max_batch_size: int, + inferred_max_length_compatible_batch_size: int, + original_max_length: int, + ) -> None: + """Add error message suggestions when max_length was set to default. + + This handles the bottom row of the truth table from the _raise_oom_error docstring. + + Args: + msg: StringIO buffer to write message to + user_provided_max_batch_size: Whether user provided batch size + found_valid_max_length: Whether valid max_length was found + found_valid_max_batch_size: Whether valid batch size was found + inferred_max_length: Suggested max_length value + inferred_max_batch_size: Suggested batch size value + inferred_max_length_compatible_batch_size: Compatible batch size for max_length + original_max_length: Original max_length value before modifications + """ + if not user_provided_max_batch_size: + if found_valid_max_length: + msg.write( + f"setting --max-length to {inferred_max_length} and " + f"--max-batch-size to {inferred_max_length_compatible_batch_size})" + ) + + if found_valid_max_batch_size: + if found_valid_max_length: + msg.write(" or ") + msg.write( + f"setting --max-batch-size to {inferred_max_batch_size}" + ) + + else: + if found_valid_max_batch_size: + msg.write( + f"reducing --max-batch-size to {inferred_max_batch_size}" + ) + if found_valid_max_length: + if found_valid_max_batch_size: + msg.write(" or ") + msg.write( + f"setting --max-length to {inferred_max_length} " + f"(currently defaulted to {original_max_length})" + ) + + def _infer_optimal_batch_size( + self, + pipeline_config: PipelineConfig, + model_cls: Type[PipelineModel], + available_kv_cache_memory: int, + ) -> int: + return model_cls.infer_optimal_batch_size( + pipeline_config, + available_kv_cache_memory, + ) + + def _load_logging_message( + self, + pipeline_config: PipelineConfig, + tokenizer_type: Type[PipelineTokenizer], + pipeline_name: str, + pipeline_model: str, + factory: bool, + ): + weight_path = ",\n ".join( + [ + f" {path}" + for path in pipeline_config.weight_path + ] + ) + factory_str = "factory" if factory else "" + + weights_repo_str = ( + f"\n weights_repo_id: {pipeline_config._weights_repo_id}" + if pipeline_config._weights_repo_id + else "" + ) + + devices_str = ", ".join( + f"{d.label}[{d.id}]" for d in pipeline_config.devices + ) + message = f""" + + Loading {tokenizer_type.__name__} and {pipeline_name}({pipeline_model}) {factory_str} for: + engine: {pipeline_config.engine} + architecture: {pipeline_config.architecture} + devices: {devices_str} + model_path: {pipeline_config.model_path}{weights_repo_str} + huggingface_revision: {pipeline_config.huggingface_revision} + quantization_encoding: {pipeline_config.quantization_encoding} + cache_strategy: {pipeline_config.cache_strategy} + weight_path: [ + {weight_path} + ] + """ + + return message + + def _set_hf_pipeline_defaults( + self, pipeline_config: PipelineConfig + ) -> PipelineConfig: + if pipeline_config.max_batch_size is None: + pipeline_config.max_batch_size = 1 + # HF pipelines always use custom continuous cache + pipeline_config.cache_strategy = KVCacheStrategy.CONTINUOUS + return pipeline_config + + def retrieve_factory( + self, + pipeline_config: PipelineConfig, + task: PipelineTask = PipelineTask.TEXT_GENERATION, + ) -> tuple[ + PipelineTokenizer, + Callable[[], TokenGenerator | EmbeddingsGenerator], + ]: + tokenizer: PipelineTokenizer + pipeline_factory: Callable[[], TokenGenerator | EmbeddingsGenerator] + + # Validate pipeline_config, and update missing values. + pipeline_config = self.validate_pipeline_config(pipeline_config) + if pipeline_config.engine == PipelineEngine.MAX: + # Keep MyPy happy. + assert pipeline_config.architecture is not None + + pipeline_class = get_pipeline_for_task(task, pipeline_config) + + # MAX pipeline + arch = self.architectures[pipeline_config.architecture] + logger.info( + self._load_logging_message( + pipeline_config=pipeline_config, + tokenizer_type=arch.tokenizer, + pipeline_model=arch.pipeline_model.__name__, + pipeline_name=pipeline_class.__name__, + factory=True, + ) + ) + + max_length = arch.pipeline_model.calculate_max_seq_len( + pipeline_config + ) + + # Old Mistral model like Mistral-7B-Instruct-v0.3 uses LlamaTokenizer + # and suffers from the whitespace decoding bug. So, we enable the fix + # for only MistralModel in order to avoid any issues with performance + # for rest of the models. This can be applied more generically once + # we have more time verifying this for all the models. + # More information: + # https://linear.app/modularml/issue/AIPIPE-197/add-support-for-mistral-7b-instruct-v03 + # TODO: remove this pipeline_model.__name__ check + if ( + arch.pipeline_model.__name__ in ("MistralModel", "Phi3Model") + and arch.tokenizer is TextTokenizer + ): + text_tokenizer = cast(Type[TextTokenizer], arch.tokenizer) + tokenizer = text_tokenizer( + pipeline_config.model_path, + revision=pipeline_config.huggingface_revision, + max_length=max_length, + max_new_tokens=pipeline_config.max_new_tokens, + trust_remote_code=pipeline_config.trust_remote_code, + enable_llama_whitespace_fix=True, + ) + else: + tokenizer = arch.tokenizer( + pipeline_config.model_path, + revision=pipeline_config.huggingface_revision, + max_length=max_length, + max_new_tokens=pipeline_config.max_new_tokens, + trust_remote_code=pipeline_config.trust_remote_code, + ) + + pipeline_factory = functools.partial( + pipeline_class, + pipeline_config=pipeline_config, + pipeline_model=arch.pipeline_model, + eos_token_id=tokenizer.eos, + ) + else: + pipeline_config = self._set_hf_pipeline_defaults(pipeline_config) + hf_pipeline_class = _HF_PIPELINE_TASK_MAP[task] + + torch_device_type = str(pipeline_config.device_specs[0].device_type) + if pipeline_config.device_specs[0].device_type == "gpu": + torch_device_type = "cuda" + torch.multiprocessing.set_start_method("spawn", force=True) + + # Generalized pipeline + tokenizer = TextTokenizer( + pipeline_config.model_path, + revision=pipeline_config.huggingface_revision, + max_length=pipeline_config.max_length, + max_new_tokens=pipeline_config.max_new_tokens, + trust_remote_code=pipeline_config.trust_remote_code, + enable_llama_whitespace_fix=True, + ) + logger.info( + self._load_logging_message( + pipeline_config=pipeline_config, + tokenizer_type=TextTokenizer, + pipeline_model="", + pipeline_name=hf_pipeline_class.__name__, + factory=True, + ) + ) + pipeline_factory = functools.partial( + hf_pipeline_class, + pipeline_config=pipeline_config, + torch_device_type=torch_device_type, + ) + + if tokenizer.eos is None: + msg = "tokenizer.eos value is None, tokenizer configuration is incomplete." + raise ValueError(msg) + + return tokenizer, pipeline_factory + + def retrieve( + self, + pipeline_config: PipelineConfig, + task: PipelineTask = PipelineTask.TEXT_GENERATION, + ) -> tuple[PipelineTokenizer, TokenGenerator | EmbeddingsGenerator]: + tokenizer, pipeline_factory = self.retrieve_factory( + pipeline_config, task + ) + return tokenizer, pipeline_factory() + + def reset(self) -> None: + self.architectures.clear() + + +PIPELINE_REGISTRY = PipelineRegistry([]) diff --git a/src/max/pipelines/requirements.txt b/src/max/pipelines/requirements.txt new file mode 100644 index 0000000000..708e101b5b --- /dev/null +++ b/src/max/pipelines/requirements.txt @@ -0,0 +1,38 @@ +# This was deleted as part of pipeline refactor +# https://github.com/modularml/modular/commit/d7e54f4a11b8f9a29e883d204dcacea90513db82#diff-b47636dfb4ba8723a713bfc288fdb324fa6e048067c7bbad0195795583edb21e +# But this is needed by benchmarking to setup the environment +# Adding this back for now to unblock. +click >= 8.1.7 +fastapi >= 0.111.0 +gguf >= 0.10.0 +requests >= 2.32.3 +sentencepiece >= 0.2.0 +tokenizers >= 0.19.1 +# PyTorch 2.5.1 with cuda support +torch == 2.5.1 +torchvision == 0.20.1 +torchaudio == 2.5.1 +transformers >= 4.44.2 +safetensors >= 0.4.5 +psutil + +# serve +hf-transfer>=0.1.9 +httpx>=0.28.1,<0.29 +huggingface-hub>=0.24.0 +opentelemetry-api>=1.29.0 +opentelemetry-exporter-otlp-proto-http>=1.27.0 +opentelemetry-exporter-prometheus>=0.48b0 +opentelemetry-sdk>=1.29.0 +pillow>=10.3.0 +prometheus-async>=22.2.0 +prometheus-client>=0.21.0 +pydantic-settings>=2.7.1 +pydantic +pyinstrument>=5.0.1 +python-json-logger>=2.0.7 +sentinel>=0.3.0 +sse-starlette>=2.1.2 +tokenizers>=0.19.0 +uvicorn>=0.34.0 +uvloop>=0.21.0 \ No newline at end of file diff --git a/src/max/pipelines/sampling.py b/src/max/pipelines/sampling.py new file mode 100644 index 0000000000..eda8e6e895 --- /dev/null +++ b/src/max/pipelines/sampling.py @@ -0,0 +1,95 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +"""Token sampling algorithms.""" + +from max.dtype import DType +from max.graph import Dim, Graph, Shape, TensorType, TensorValue, ops +from max.pipelines import SamplingParams + + +def _bitmask_sampler(sampling_params: SamplingParams) -> Graph: + logits_in_type = TensorType( + sampling_params.in_dtype, ["batch", "vocab_size"] + ) + prev_tokens_type = TensorType(DType.int64, ["batch", "num_prev_steps"]) + bitmask_type = TensorType(DType.bool, ["batch", "vocab_size"]) + + with Graph( + "bitmask_sampler", + input_types=[logits_in_type, prev_tokens_type, bitmask_type], + ) as graph: + # Deconstruct inputs and cast. + logits, prev_tokens, bitmask = (val.tensor for val in graph.inputs) + logits = ops.cast(logits, sampling_params.out_dtype) + + # Mask the logits out. + logits = ops.select( + bitmask, logits, ops.constant(-10000, dtype=DType.float32) + ) + + # Apply top_k or argmax sampling. + shape = Shape(logits.shape) + shape[-1] = Dim(1) + tokens = ops.custom( + "topk_fused_sampling", + [ + ops.constant(sampling_params.top_k, dtype=DType.int64), + logits, + ], + [TensorType(DType.int64, shape)], + )[0] + assert isinstance(tokens, TensorValue) + + all_tokens = ops.concat([prev_tokens, tokens], -1) + tokens = ops.squeeze(tokens, -1) + graph.output(tokens, all_tokens) + + return graph + + +def _vanilla_sampler(sampling_params: SamplingParams) -> Graph: + logits_in_type = TensorType( + sampling_params.in_dtype, ["batch", "vocab_size"] + ) + prev_tokens_type = TensorType(DType.int64, ["batch", "num_prev_steps"]) + with Graph( + "token_sampler", input_types=[logits_in_type, prev_tokens_type] + ) as graph: + logits, prev_tokens = (val.tensor for val in graph.inputs) + logits = ops.cast(logits, sampling_params.out_dtype) + + shape = Shape(logits.shape) + shape[-1] = Dim(1) + tokens = ops.custom( + "topk_fused_sampling", + [ + ops.constant(sampling_params.top_k, dtype=DType.int64), + logits, + ], + [TensorType(DType.int64, shape)], + )[0] + assert isinstance(tokens, TensorValue) + + all_tokens = ops.concat([prev_tokens, tokens], -1) + tokens = ops.squeeze(tokens, -1) + graph.output(tokens, all_tokens) + + return graph + + +def token_sampler(sampling_params: SamplingParams) -> Graph: + if sampling_params.enable_structured_output: + return _bitmask_sampler(sampling_params) + else: + return _vanilla_sampler(sampling_params) diff --git a/src/max/pipelines/speculative_decoding.py b/src/max/pipelines/speculative_decoding.py new file mode 100644 index 0000000000..b72c1cf9f8 --- /dev/null +++ b/src/max/pipelines/speculative_decoding.py @@ -0,0 +1,56 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# mypy: disable-error-code="import-not-found" +"""Speculative Decoding Text Generation Pipeline""" + +from typing import Type, TypeVar + +from .config import PipelineConfig +from .context import InputContext +from .interfaces import TextGenerationResponse, TokenGenerator +from .pipeline import PipelineModel + +T = TypeVar("T", bound=InputContext) + + +class SpeculativeDecodingTextGenerationPipeline(TokenGenerator[T]): + """Generalized token generator pipeline with speculative decoding.""" + + def __init__( + self, + pipeline_config: PipelineConfig, + pipeline_model: Type[PipelineModel], + eos_token_id: int, + ) -> None: + raise NotImplementedError( + "init not yet implemented for SpeculativeDecodingTextGenerationPipeline" + ) + + def next_token( + self, batch: dict[str, T], num_steps: int + ) -> dict[str, TextGenerationResponse]: + """Provided a batch, execute both the draft model for num_steps and the target model for num_steps + 1 tokens, accepting final tokens via rejection sampling, returning the variable list of token integers.""" + raise NotImplementedError( + "next_token not yet implemented for SpeculativeDecodingTextGenerationPipeline" + ) + + def release(self, context: T) -> None: + """Releases resources associated with this context. + + Args: + context (TokenGeneratorContext): Finished context. + + """ + raise NotImplementedError( + "release not yet implemented for SpeculativeDecodingTextGenerationPipeline" + ) diff --git a/src/max/pipelines/tokenizer.py b/src/max/pipelines/tokenizer.py new file mode 100644 index 0000000000..03f4b73ae7 --- /dev/null +++ b/src/max/pipelines/tokenizer.py @@ -0,0 +1,518 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # +# mypy: disable-error-code="import-not-found" +"""Implementations of provided tokenizers.""" + +from __future__ import annotations + +import asyncio +import io +import json +import logging +from typing import Optional, Sequence, Union, cast + +import numpy as np +import torch +from PIL import Image +from transformers import ( + AutoProcessor, + AutoTokenizer, + CodeLlamaTokenizer, + CodeLlamaTokenizerFast, + LlamaTokenizer, + LlamaTokenizerFast, + PreTrainedTokenizer, + PreTrainedTokenizerFast, +) + +from .context import TextAndVisionContext, TextContext +from .interfaces import ( + PipelineTokenizer, + TokenGeneratorContext, + TokenGeneratorRequest, + TokenGeneratorRequestMessage, + TokenGeneratorRequestTool, +) + +logger = logging.getLogger("max.pipelines") + + +class IdentityPipelineTokenizer( + PipelineTokenizer[TokenGeneratorContext, str], +): + @property + def eos(self) -> int: + return 0 + + @property + def expects_content_wrapping(self) -> bool: + return False + + async def encode(self, prompt: str) -> str: + return prompt + + async def decode( + self, + context: TokenGeneratorContext, + encoded: str, + **kwargs, + ) -> str: + if isinstance(encoded, str): + return encoded + return "" + + +class PreTrainedPipelineTokenizer( + PipelineTokenizer[TokenGeneratorContext, np.ndarray] +): + def __init__( + self, + delegate: Union[PreTrainedTokenizer, PreTrainedTokenizerFast], + ) -> None: + assert isinstance( + delegate, (PreTrainedTokenizer, PreTrainedTokenizerFast) + ) + self.delegate = delegate + + def apply_chat_template( + self, messages: list[TokenGeneratorRequestMessage] + ) -> str: + try: + templated_message = self.delegate.apply_chat_template( + messages, tokenize=False, add_generation_prompt=True + ) + return cast(str, templated_message) + except Exception: + msg = ( + "apply_chat_template failed for" + " PreTrainedTokenGeneratorTokenizer" + ) + logger.warning(msg) + return "\n".join([str(message["content"]) for message in messages]) + + @property + def eos(self) -> int: + return self.delegate.eos_token_id + + @property + def expects_content_wrapping(self) -> bool: + return False + + async def encode(self, prompt: str) -> np.ndarray: + return np.array(self.delegate.encode(prompt)) + + async def decode( + self, + context: TokenGeneratorContext, + encoded: np.ndarray, + **kwargs, + ) -> str: + return self.delegate.decode(encoded, **kwargs) + + +def max_tokens_to_generate( + prompt_size: int, + max_length: int | None, + max_new_tokens: int | None = None, +) -> int | None: + """Returns the max number of new tokens to generate.""" + if max_length is None: + return max_new_tokens + _difference_between_max_and_prompt = max(max_length - prompt_size, 0) + if max_new_tokens is None: + return _difference_between_max_and_prompt + return min(max_new_tokens, _difference_between_max_and_prompt) + + +async def run_with_default_executor(fn, *args): + loop = asyncio.get_running_loop() + return await loop.run_in_executor(None, fn, *args) + + +class TextTokenizer(PipelineTokenizer[TextContext, np.ndarray]): + """Encapsulates creation of TextContext and specific token encode/decode logic.""" + + def __init__( + self, + model_path: str, + *, + revision: str | None = None, + max_length: int | None = None, + max_new_tokens: int | None = None, + trust_remote_code: bool = False, + enable_llama_whitespace_fix: bool = False, + ) -> None: + self.model_path = model_path + self.max_length = max_length + self.max_new_tokens = max_new_tokens + + self.delegate = AutoTokenizer.from_pretrained( + model_path, + revision=revision, + trust_remote_code=trust_remote_code, + # If `max_length` is None, the max length will be taken + # from the HuggingFace tokenizer_config. + model_max_length=max_length, + ) + + # configure Llama whitespace fix if needed + self._enable_llama_whitespace_fix = ( + enable_llama_whitespace_fix and self._is_llama_tokenizer + ) + ( + self._llama_whitespace_fix_dummy_token_id, + self._llama_whitespace_fix_dummy_token_len, + ) = self._llama_whitespace_fix_dummy_token + + def apply_chat_template( + self, + messages: list[TokenGeneratorRequestMessage], + tools: Optional[list[TokenGeneratorRequestTool]], + ) -> str: + try: + templated_message = self.delegate.apply_chat_template( + messages, + tokenize=False, + add_generation_prompt=True, + tools=tools, + ) + return cast(str, templated_message) + except Exception: + msg = ( + "apply_chat_template failed for" + f" TextTokenizer({self.model_path})" + ) + logger.warning(msg) + return "\n".join([str(message["content"]) for message in messages]) + + @property + def eos(self) -> int: + return self.delegate.eos_token_id + + @property + def expects_content_wrapping(self) -> bool: + return False + + async def encode(self, prompt: Union[str, Sequence[int]]) -> np.ndarray: + """Transform the provided prompt into a token array.""" + + encoded_prompt: np.ndarray + if isinstance(prompt, str): + # Note: the underlying tokenizer may not be thread safe in some cases, see https://github.com/huggingface/tokenizers/issues/537 + # Add a standard (non-async) lock in the executor thread if needed. + encoded_prompt = await run_with_default_executor( + self.delegate.encode, prompt + ) + max_length = self.max_length or self.delegate.model_max_length + if max_length and len(encoded_prompt) > max_length: + raise ValueError( + f"Input string is larger than tokenizer's max length ({len(encoded_prompt)} > {max_length})." + ) + else: + encoded_prompt = np.array(list(prompt)) + + return encoded_prompt + + async def decode( + self, context: TextContext, encoded: np.ndarray, **kwargs + ) -> str: + """Transformer a provided encoded token array, back into readable text.""" + # Sometimes, encoded comes in as an int so, make it np array + if isinstance(encoded, int): + encoded = np.array(encoded) + + # There is an issue where Llama tokenizer strips leading spaces + # if a single token is decoded at a time. This is a temporary + # fix until the issue resolved on the Tokenizers side. + # More information: + # https://github.com/huggingface/transformers/issues/31643 + # https://github.com/Lightning-AI/litgpt/pull/1559 + if self._enable_llama_whitespace_fix and encoded.size == 1: + return self._decode_with_llama_whitespace_fix(encoded, **kwargs) + + return self.delegate.decode(encoded, **kwargs) + + async def new_context(self, request: TokenGeneratorRequest) -> TextContext: + """Create a new TextContext object, leveraging necessary information like + cache_seq_id and prompt from TokenGeneratorRequest.""" + + prompt: Union[str, list[int]] + if request.prompt is not None: + if isinstance(request.prompt, str): + prompt = str(request.prompt) + else: + prompt = [int(t) for t in request.prompt] + elif request.messages is not None: + prompt = self.apply_chat_template(request.messages, request.tools) + else: + raise ValueError(f"{request} does not provide messages or prompt.") + + encoded_prompt = await self.encode(prompt) + + # TODO(zheng): We should probably just make max_new_tokens an optional + # instead of -1. + max_new_tokens = None + if request.max_new_tokens is not None: + max_new_tokens = request.max_new_tokens + elif self.max_new_tokens != -1: + max_new_tokens = self.max_new_tokens + + max_gen_tokens = max_tokens_to_generate( + len(encoded_prompt), + self.max_length, + max_new_tokens, + ) + + json_schema = ( + json.dumps(request.response_format.get("json_schema", None)) + if request.response_format + else None + ) + context = TextContext( + prompt=prompt, + cache_seq_id=request.index, + max_length=len(encoded_prompt) + max_gen_tokens + if max_gen_tokens is not None + else None, + tokens=np.array(encoded_prompt), + log_probabilities=request.logprobs, + log_probabilities_echo=request.echo, + json_schema=json_schema, + ) + return context + + @property + def _is_llama_tokenizer(self) -> bool: + tokenizers = ( + LlamaTokenizer, + LlamaTokenizerFast, + CodeLlamaTokenizer, + CodeLlamaTokenizerFast, + ) + return isinstance(self.delegate, tokenizers) + + @property + def _llama_whitespace_fix_dummy_token(self) -> tuple[int, int]: + dummy_token_id = 33 # \x1e + dummy_token_decoded = self.delegate.decode([dummy_token_id]) + return dummy_token_id, len(dummy_token_decoded) + + def _decode_with_llama_whitespace_fix( + self, encoded: np.ndarray, **kwargs + ) -> str: + decoded = self.delegate.decode( + np.insert(encoded, 0, self._llama_whitespace_fix_dummy_token_id), + **kwargs, + ) + return decoded[self._llama_whitespace_fix_dummy_token_len :] + + +class TextAndVisionTokenizer( + PipelineTokenizer[TextAndVisionContext, np.ndarray] +): + """Encapsulates creation of TextContext and specific token encode/decode logic.""" + + def __init__( + self, + model_path: str, + *, + revision: str | None = None, + max_length: int | None = None, + max_new_tokens: int | None = None, + trust_remote_code: bool = False, + ) -> None: + self.model_path = model_path + self.max_length = max_length + self.max_new_tokens = max_new_tokens + + self.delegate = AutoTokenizer.from_pretrained( + model_path, + revision=revision, + trust_remote_code=trust_remote_code, + # If `max_length` is None, the max length will be taken + # from the HuggingFace tokenizer_config. + model_max_length=max_length, + ) + self.processor = AutoProcessor.from_pretrained( + model_path, + revision=revision, + trust_remote_code=trust_remote_code, + ) + + def _wrap_str_message_content( + self, messages: list[TokenGeneratorRequestMessage] + ) -> list[TokenGeneratorRequestMessage]: + # Wrap string type values of "content" key with "type": "text" and its + # value. For example, if the message is {"content": "Hello, world!"}, + # it will be wrapped with {"type": "text", "text": "Hello, world!"}. + # This is a workaround for LlamaVision's chat template: + # https://huggingface.co/meta-llama/Llama-3.2-11B-Vision-Instruct/blob/main/chat_template.json + for message in messages: + if isinstance(message["content"], str): + message["content"] = [ + {"type": "text", "text": message["content"]} + ] + elif isinstance(message["content"], list): + for content in message["content"]: + if "content" in content and content["type"] == "text": + content["text"] = content.pop("content") + return messages + + def apply_chat_template( + self, messages: list[TokenGeneratorRequestMessage] + ) -> str: + # TODO: Refactor this. + if self.model_path == "meta-llama/Llama-3.2-11B-Vision-Instruct": + messages = self._wrap_str_message_content(messages) + try: + templated_message = self.processor.apply_chat_template( + messages, tokenize=False, add_generation_prompt=True + ) + return cast(str, templated_message) + except Exception as e: + msg = "apply_chat_template failed for TextAndVisionTokenizer" + logger.warning(msg) + logger.warning(str(e)) + prompt = [] + for message in messages: + if isinstance(message["content"], str): + prompt.append(message["content"]) + elif isinstance(message["content"], list): + for content in message["content"]: + if content["type"] == "text": + if "text" in content: + prompt.append(content["text"]) + else: + prompt.append(content["content"]) + return "\n".join(prompt) + + @property + def eos(self) -> int: + return self.delegate.eos_token_id + + @property + def expects_content_wrapping(self) -> bool: + return True + + async def encode(self, prompt: Union[str, Sequence[int]]) -> np.ndarray: + """Transform the provided prompt into a token array.""" + + encoded_prompt: np.ndarray + if isinstance(prompt, str): + # Note: the underlying tokenizer may not be thread safe in some cases, see https://github.com/huggingface/tokenizers/issues/537 + # Add a standard (non-async) lock in the executor thread if needed. + encoded_prompt = await run_with_default_executor( + self.delegate.encode, prompt + ) + max_length = self.max_length or self.delegate.model_max_length + if max_length and len(encoded_prompt) > max_length: + raise ValueError( + f"Input string is larger than tokenizer's max length ({len(encoded_prompt)} > {max_length})." + ) + else: + encoded_prompt = np.array(list(prompt)) + + return encoded_prompt + + async def decode( + self, context: TextAndVisionContext, encoded: np.ndarray, **kwargs + ) -> str: + """Transformer a provided encoded token array, back into readable text.""" + return self.delegate.decode(encoded, **kwargs) + + async def new_context( + self, request: TokenGeneratorRequest + ) -> TextAndVisionContext: + """Create a new TextAndVisionContext object, leveraging necessary information like + cache_seq_id and prompt from TokenGeneratorRequest.""" + prompt: Union[str, Sequence[int]] + if request.prompt is not None: + prompt = request.prompt + elif request.messages is not None: + prompt = self.apply_chat_template(request.messages) + else: + msg = f"{request} does not provide messages or prompt." + raise ValueError(msg) + + # Load images. + images = ( + [ + Image.open(io.BytesIO(image_data)) + for image_data in request.images + ] + if request.images + else None + ) + # PixtralProcessor returns a list of torch tensors. + # LlamaVision returns a np Array. + inputs = self.processor( + text=prompt, + images=images, + ) + + if "input_ids" not in inputs: + msg = "input_ids not provided in AutoProcessor output, please ensure you are using the correct processor for multi-modal inputs." + raise ValueError(msg) + encoded_prompt = np.array(inputs["input_ids"][0]) + + # TODO(zheng): We should probably just make max_new_tokens an optional + # instead of -1. + max_new_tokens = None + if request.max_new_tokens is not None: + max_new_tokens = request.max_new_tokens + elif self.max_new_tokens != -1: + max_new_tokens = self.max_new_tokens + + max_gen_tokens = max_tokens_to_generate( + encoded_prompt.shape[0], + self.max_length, + max_new_tokens, + ) + + extra_model_args = dict() + + if images is not None: + if "pixel_values" not in inputs: + msg = "pixel_values not provided in AutoProcessor output, please ensure you are using the correct processor for multi-modal inputs." + raise ValueError(msg) + pixel_values = inputs["pixel_values"][0] + if isinstance(pixel_values, list): + pixel_values = [ + tensor.numpy() if torch.is_tensor(tensor) else tensor + for tensor in pixel_values + ] + if "aspect_ratio_ids" in inputs: + extra_model_args["aspect_ratio_ids"] = inputs.aspect_ratio_ids + if "aspect_ratio_mask" in inputs: + extra_model_args["aspect_ratio_mask"] = inputs.aspect_ratio_mask + else: + pixel_values = [] + + json_schema = ( + json.dumps(request.response_format.get("json_schema", None)) + if request.response_format + else None + ) + + context = TextAndVisionContext( + prompt=prompt, + pixel_values=pixel_values, + extra_model_args=extra_model_args, + cache_seq_id=request.index, + tokens=encoded_prompt, + max_length=encoded_prompt.shape[0] + max_gen_tokens + if max_gen_tokens is not None + else None, + json_schema=json_schema, + ) + return context diff --git a/src/max/pixi.toml b/src/max/pixi.toml new file mode 100644 index 0000000000..6c2812dc86 --- /dev/null +++ b/src/max/pixi.toml @@ -0,0 +1,17 @@ +[project] +name = "max-pipelines-example" +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-aarch64", "linux-64"] +description = "MAX Pipelines" +version = "0.5.0" +authors = ["Modular Inc "] + +[dependencies] +max-pipelines = "*" + +[tasks] +llama3 = "max-pipelines llama3" +replit = "max-pipelines replit" +mistral = "max-pipelines mistral" +generate = "max-pipelines generate" +serve = "max-pipelines serve" diff --git a/tutorials/README.md b/tutorials/README.md new file mode 100644 index 0000000000..d5bca75fb9 --- /dev/null +++ b/tutorials/README.md @@ -0,0 +1,4 @@ +# MAX tutorials finished code + +This directory contains the "finished" code for tutorials you can read at +[docs.modular.com/max/tutorials](https://docs.modular.com/max/tutorials). diff --git a/tutorials/deploy-aws-kubernetes/README.md b/tutorials/deploy-aws-kubernetes/README.md new file mode 100644 index 0000000000..b319416118 --- /dev/null +++ b/tutorials/deploy-aws-kubernetes/README.md @@ -0,0 +1,6 @@ +# Tutorial: Deploy a model with Kubernetes and Helm + +This is the client code for the [Deploy a model with Kubernetes and +Helm](https://docs.modular.com/max/tutorials/deploy-aws-kubernetes) tutorial. + +Please refer to that page for more information. diff --git a/tutorials/deploy-aws-kubernetes/client.py b/tutorials/deploy-aws-kubernetes/client.py new file mode 100644 index 0000000000..076bc3c525 --- /dev/null +++ b/tutorials/deploy-aws-kubernetes/client.py @@ -0,0 +1,63 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" +os.environ["TOKENIZERS_PARALLELISM"] = "false" + +import numpy as np +import tritonclient.http as httpclient +from transformers import AutoTokenizer + +text = "Paris is the [MASK] of France." + +# Create a triton client +triton_client = httpclient.InferenceServerClient(url="127.0.0.1:8000") + +# Preprocess input statement +tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") +inputs = tokenizer( + text, + return_tensors="np", + return_token_type_ids=True, + padding="max_length", + truncation=True, + max_length=128, +) + +# Set the input data +triton_inputs = [ + httpclient.InferInput("input_ids", inputs["input_ids"].shape, "INT32"), + httpclient.InferInput( + "attention_mask", inputs["attention_mask"].shape, "INT32" + ), + httpclient.InferInput( + "token_type_ids", inputs["token_type_ids"].shape, "INT32" + ), +] +triton_inputs[0].set_data_from_numpy(inputs["input_ids"].astype(np.int32)) +triton_inputs[1].set_data_from_numpy(inputs["attention_mask"].astype(np.int32)) +triton_inputs[2].set_data_from_numpy(inputs["token_type_ids"].astype(np.int32)) + +# Executing +output = triton_client.infer("bert-base-uncased", triton_inputs) + +# Post-processing +masked_index = (inputs["input_ids"] == tokenizer.mask_token_id).nonzero()[1] +logits = output.as_numpy("result0")[0, masked_index, :] +predicted_token_ids = logits.argmax(axis=-1) +predicted_text = tokenizer.decode(predicted_token_ids) +output_text = text.replace("[MASK]", predicted_text) +print(output_text) diff --git a/tutorials/deploy-cloudformation-sagemaker/README.md b/tutorials/deploy-cloudformation-sagemaker/README.md new file mode 100644 index 0000000000..9cd602e606 --- /dev/null +++ b/tutorials/deploy-cloudformation-sagemaker/README.md @@ -0,0 +1,7 @@ +# Tutorial: Deploy a model with AWS CloudFormation + +This is the client code for the [Deploy a model with with AWS +CloudFormation](https://docs.modular.com/max/tutorials/deploy-cloudformation-sagemaker) +tutorial. + +Please refer to that page for more information. diff --git a/tutorials/deploy-cloudformation-sagemaker/client.py b/tutorials/deploy-cloudformation-sagemaker/client.py new file mode 100644 index 0000000000..8e39608aa4 --- /dev/null +++ b/tutorials/deploy-cloudformation-sagemaker/client.py @@ -0,0 +1,116 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +# suppress extraneous logging +import os + +os.environ["TRANSFORMERS_VERBOSITY"] = "critical" + +import json + +import boto3 +import numpy as np +import transformers +from botocore.config import Config + +config = Config(region_name="us-east-1") +client = boto3.client("sagemaker-runtime", config=config) + +# NOTE: Paste your endpoint here +endpoint_name = "YOUR-ENDPOINT-GOES-HERE" + +text = "The quick brown fox jumped over the lazy dog." + +tokenizer = transformers.BertTokenizer.from_pretrained("bert-base-uncased") +inputs = tokenizer( + text, padding="max_length", max_length=128, return_tensors="pt" +) + +# Convert tensor inputs to list for payload +input_ids = inputs["input_ids"].tolist()[0] +attention_mask = inputs["attention_mask"].tolist()[0] +token_type_ids = inputs["token_type_ids"].tolist()[0] + +payload = { + "inputs": [ + { + "name": "input_ids", + "shape": [1, 128], + "datatype": "INT32", + "data": input_ids, + }, + { + "name": "attention_mask", + "shape": [1, 128], + "datatype": "INT32", + "data": attention_mask, + }, + { + "name": "token_type_ids", + "shape": [1, 128], + "datatype": "INT32", + "data": token_type_ids, + }, + ] +} + +http_response = client.invoke_endpoint( + EndpointName=endpoint_name, + ContentType="application/octet-stream", + Body=json.dumps(payload), +) +response = json.loads(http_response["Body"].read().decode("utf8")) +outputs = response["outputs"] + + +def softmax(logits): + exp_logits = np.exp(logits - np.max(logits)) + return exp_logits / exp_logits.sum(axis=-1, keepdims=True) + + +# Process the output +for output in outputs: + logits = output["data"] + logits = np.array(logits).reshape(output["shape"]) + + print(f"Logits shape: {logits.shape}") + + if ( + len(logits.shape) == 3 + ): # Shape [batch_size, sequence_length, num_classes] + token_probabilities = softmax(logits) + predicted_classes = np.argmax(token_probabilities, axis=-1) + + print(f"Predicted classes shape: {predicted_classes.shape}") + print( + f"Predicted class indices range: {np.min(predicted_classes)}," + f" {np.max(predicted_classes)}" + ) + + # Map predicted indices to tokens + predicted_tokens = tokenizer.convert_ids_to_tokens(predicted_classes[0]) + + # Pair each input token with its predicted token + input_tokens = tokenizer.convert_ids_to_tokens(input_ids) + token_pairs = list(zip(input_tokens, predicted_tokens)) + + print("Predicted Token Pairs:") + print("-" * 45) + print("| {:<20} | {:<18} |".format("Input Token", "Predicted Token")) + print("-" * 45) + for input_token, predicted_token in token_pairs: + if input_token != "[PAD]": # Exclude padding tokens + print( + "| {:<20} | {:<18} |".format(input_token, predicted_token) + ) + print("-" * 45) diff --git a/tutorials/hello-magic/.gitattributes b/tutorials/hello-magic/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/tutorials/hello-magic/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/hello-magic/.gitignore b/tutorials/hello-magic/.gitignore new file mode 100644 index 0000000000..bd58f98a84 --- /dev/null +++ b/tutorials/hello-magic/.gitignore @@ -0,0 +1,5 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic diff --git a/tutorials/hello-magic/README.md b/tutorials/hello-magic/README.md new file mode 100644 index 0000000000..57d5b941e8 --- /dev/null +++ b/tutorials/hello-magic/README.md @@ -0,0 +1,4 @@ +# Hello Magic + +This code corresponds to the tutorial, +[A step-by-step guide to Magic](https://docs.modular.com/max/tutorials/magic). diff --git a/tutorials/hello-magic/hello.mojo b/tutorials/hello-magic/hello.mojo new file mode 100644 index 0000000000..7630652a0d --- /dev/null +++ b/tutorials/hello-magic/hello.mojo @@ -0,0 +1,16 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + + +def main(): + print("hello, magic!") diff --git a/tutorials/hello-magic/local/.gitattributes b/tutorials/hello-magic/local/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/tutorials/hello-magic/local/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/hello-magic/local/.gitignore b/tutorials/hello-magic/local/.gitignore new file mode 100644 index 0000000000..bd58f98a84 --- /dev/null +++ b/tutorials/hello-magic/local/.gitignore @@ -0,0 +1,5 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic diff --git a/tutorials/hello-magic/local/__init__.mojo b/tutorials/hello-magic/local/__init__.mojo new file mode 100644 index 0000000000..ccf277134c --- /dev/null +++ b/tutorials/hello-magic/local/__init__.mojo @@ -0,0 +1,14 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from .zero import zero diff --git a/tutorials/hello-magic/local/magic.lock b/tutorials/hello-magic/local/magic.lock new file mode 100644 index 0000000000..db19c74a8c --- /dev/null +++ b/tutorials/hello-magic/local/magic.lock @@ -0,0 +1,2333 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/pytorch/ + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 8183ab363b7892f67ba3660929f1c3f4f8646e4a2a02d499d387acc0509764c3 + md5: 42164c6ce8e563c20a542686a8b9b964 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + size: 1571072276 + timestamp: 1729655770987 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.12_0.tar.bz2 + sha256: 1d476688886b78f641973d1b5c1352eaece59484f4408f2c1af46e3634a6c957 + md5: a393d6275c53d5218015a23c741dc004 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + size: 62089911 + timestamp: 1729651375444 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py312.tar.bz2 + build_number: 1 + sha256: f0beb429b3834a3796626642829a7e4bb9d4fe6477c8dc614a55e5c4f15a6a05 + md5: bb4b2d07cb6b9b476e78740c08ba69fe + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + size: 244939186 + timestamp: 1727971107041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 diff --git a/tutorials/hello-magic/local/mojoproject.toml b/tutorials/hello-magic/local/mojoproject.toml new file mode 100644 index 0000000000..27267f0813 --- /dev/null +++ b/tutorials/hello-magic/local/mojoproject.toml @@ -0,0 +1,13 @@ +[project] +platforms = ["osx-arm64", "linux-64"] +version = "0.0.0" +authors = ["Modular "] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Add a short description here" +name = "local" + +[tasks] + +[dependencies] +max = ">=24.4.0,<25" +pytorch = ">=2.5.1,<3" diff --git a/tutorials/hello-magic/local/zero.mojo b/tutorials/hello-magic/local/zero.mojo new file mode 100644 index 0000000000..83cbaecd3c --- /dev/null +++ b/tutorials/hello-magic/local/zero.mojo @@ -0,0 +1,23 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from python import Python, PythonObject + + +def zero() -> PythonObject: + torch = Python.import_module("torch") + return torch.zeros(1) + + +def main(): + print(zero()) diff --git a/tutorials/hello-magic/magic.lock b/tutorials/hello-magic/magic.lock new file mode 100644 index 0000000000..eafcc2a768 --- /dev/null +++ b/tutorials/hello-magic/magic.lock @@ -0,0 +1,2901 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/pytorch/ + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py311h0f6cedb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.11_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py311.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py311hb5d9ff4_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.11_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + test: + channels: + - url: https://conda.anaconda.org/pytorch/ + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py311h0f6cedb_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.11_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py311.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py311hb5d9ff4_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.11_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + purls: [] + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 5744 + timestamp: 1650742457817 +- pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + name: annotated-types + version: 0.7.0 + sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 + requires_dist: + - typing-extensions>=4.0.0 ; python_full_version < '3.9' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/46/eb/e7f063ad1fec6b3178a3cd82d1a3c4de82cccf283fc42746168188e1cdd5/anyio-4.8.0-py3-none-any.whl + name: anyio + version: 4.8.0 + sha256: b5011f270ab5eb0abf13385f851315585cc37ef330dd88e27ec3d34d651fd47a + requires_dist: + - exceptiongroup>=1.0.2 ; python_full_version < '3.11' + - idna>=2.8 + - sniffio>=1.1 + - typing-extensions>=4.5 ; python_full_version < '3.13' + - trio>=0.26.1 ; extra == 'trio' + - anyio[trio] ; extra == 'test' + - coverage[toml]>=7 ; extra == 'test' + - exceptiongroup>=1.2.0 ; extra == 'test' + - hypothesis>=4.0 ; extra == 'test' + - psutil>=5.9 ; extra == 'test' + - pytest>=7.0 ; extra == 'test' + - trustme ; extra == 'test' + - truststore>=0.9.1 ; python_full_version >= '3.10' and extra == 'test' + - uvloop>=0.21 ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and platform_system != 'Windows' and extra == 'test' + - packaging ; extra == 'doc' + - sphinx~=7.4 ; extra == 'doc' + - sphinx-rtd-theme ; extra == 'doc' + - sphinx-autodoc-typehints>=1.2.0 ; extra == 'doc' + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + purls: [] + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/click?source=hash-mapping + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/colorama?source=hash-mapping + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.11.11-py311hd8ed1ab_1.conda + noarch: generic + sha256: b9bb4486ba7b81d7264e92f346c9fa2d4a6c9678c28b33fb5d1652ecc7f82e26 + md5: 6aab9c45010dc5ed92215f89cdafa201 + depends: + - python 3.11.11.* + - python_abi * *_cp311 + license: Python-2.0 + purls: [] + size: 46068 + timestamp: 1733407866862 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 21022 + timestamp: 1709765922936 +- pypi: https://files.pythonhosted.org/packages/32/b6/7517af5234378518f27ad35a7b24af9591bc500b8c1780929c1295999eb6/fastapi-0.115.9-py3-none-any.whl + name: fastapi + version: 0.115.9 + sha256: 4a439d7923e4de796bcc88b64e9754340fcd1574673cbd865ba8a99fe0d28c56 + requires_dist: + - starlette>=0.40.0,<0.46.0 + - pydantic>=1.7.4,!=1.8,!=1.8.1,!=2.0.0,!=2.0.1,!=2.1.0,<3.0.0 + - typing-extensions>=4.8.0 + - fastapi-cli[standard]>=0.0.5 ; extra == 'standard' + - httpx>=0.23.0 ; extra == 'standard' + - jinja2>=3.1.5 ; extra == 'standard' + - python-multipart>=0.0.18 ; extra == 'standard' + - email-validator>=2.0.0 ; extra == 'standard' + - uvicorn[standard]>=0.12.0 ; extra == 'standard' + - fastapi-cli[standard]>=0.0.5 ; extra == 'all' + - httpx>=0.23.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - python-multipart>=0.0.18 ; extra == 'all' + - itsdangerous>=1.1.0 ; extra == 'all' + - pyyaml>=5.3.1 ; extra == 'all' + - ujson>=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0 ; extra == 'all' + - orjson>=3.2.1 ; extra == 'all' + - email-validator>=2.0.0 ; extra == 'all' + - uvicorn[standard]>=0.12.0 ; extra == 'all' + - pydantic-settings>=2.0.0 ; extra == 'all' + - pydantic-extra-types>=2.0.0 ; extra == 'all' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + purls: + - pkg:pypi/filelock?source=hash-mapping + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + purls: [] + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py311h0f6cedb_3.conda + sha256: 27aad6269fb3fcb80170a0c9f2108644b7560c56c88ab2d6da951059593c38ca + md5: 847d4e1e49a6aec4c130b2db001c3802 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 202814 + timestamp: 1733462674178 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py311hb5d9ff4_3.conda + sha256: 72c5ac6f1c358fda23f7d68c92c9d2dd4e458b329ece1ad2c3714991c9f8f5f6 + md5: 5ebaa44b9a984799aea445996f63f002 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: + - pkg:pypi/gmpy2?source=hash-mapping + size: 147171 + timestamp: 1733462769936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 12129203 + timestamp: 1720853576813 +- pypi: https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl + name: idna + version: '3.10' + sha256: 946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3 + requires_dist: + - ruff>=0.6.2 ; extra == 'all' + - mypy>=1.11.2 ; extra == 'all' + - pytest>=8.3.2 ; extra == 'all' + - flake8>=7.1.1 ; extra == 'all' + requires_python: '>=3.6' +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/importlib-metadata?source=compressed-mapping + size: 29141 + timestamp: 1737420302391 +- pypi: https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl + name: iniconfig + version: 2.0.0 + sha256: b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374 + requires_python: '>=3.7' +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jinja2?source=hash-mapping + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-client?source=hash-mapping + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/jupyter-core?source=hash-mapping + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + purls: [] + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + purls: [] + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + purls: [] + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + purls: [] + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + purls: [] + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + purls: [] + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + purls: [] + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + purls: [] + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + purls: [] + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + purls: [] + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + purls: [] + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + purls: [] + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py311h2dc5d0c_1.conda + sha256: 0291d90706ac6d3eea73e66cd290ef6d805da3fad388d1d476b8536ec92ca9a8 + md5: 6565a715337ae279e351d0abd8ffe88a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 25354 + timestamp: 1733219879408 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py311h4921393_1.conda + sha256: 4f738a7c80e34e5e5d558e946b06d08e7c40e3cc4bdf08140bf782c359845501 + md5: 249e2f6f5393bb6b36b3d3a3eebdcdf9 + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/markupsafe?source=hash-mapping + size: 24976 + timestamp: 1733219849253 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + purls: [] + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + purls: [] + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + purls: [] + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/mpmath?source=hash-mapping + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/mypy-extensions?source=hash-mapping + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + purls: [] + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + purls: [] + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py311h64a7726_0.conda + sha256: 3f4365e11b28e244c95ba8579942b0802761ba7bb31c026f50d1a9ea9c728149 + md5: a502d7aad449a1206efb366d6a12c52d + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 8065890 + timestamp: 1707225944355 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py311h7125741_0.conda + sha256: 160a52a01fea44fe9753a2ed22cf13d7b55c8a89ea0b8738546fdbf4795d6514 + md5: 3160b93669a0def35a7a8158ebb33816 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/numpy?source=hash-mapping + size: 6652352 + timestamp: 1707226297967 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + purls: [] + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/packaging?source=hash-mapping + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + purls: + - pkg:pypi/pathspec?source=hash-mapping + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/platformdirs?source=hash-mapping + size: 20448 + timestamp: 1733232756001 +- pypi: https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl + name: pluggy + version: 1.5.0 + sha256: 44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669 + requires_dist: + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + - pytest ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl + name: pydantic + version: 2.10.6 + sha256: 427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584 + requires_dist: + - annotated-types>=0.6.0 + - pydantic-core==2.27.2 + - typing-extensions>=4.12.2 + - email-validator>=2.0.0 ; extra == 'email' + - tzdata ; python_full_version >= '3.9' and platform_system == 'Windows' and extra == 'timezone' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/9e/e3/71fe85af2021f3f386da42d291412e5baf6ce7716bd7101ea49c810eda90/pydantic_core-2.27.2-cp311-cp311-macosx_11_0_arm64.whl + name: pydantic-core + version: 2.27.2 + sha256: 26f32e0adf166a84d0cb63be85c562ca8a6fa8de28e5f0d92250c6b7e9e2aff7 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/a8/7c/b860618c25678bbd6d1d99dbdfdf0510ccb50790099b963ff78a124b754f/pydantic_core-2.27.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: pydantic-core + version: 2.27.2 + sha256: 1c1fd185014191700554795c99b347d64f2bb637966c4cfc16998a0ca700d048 + requires_dist: + - typing-extensions>=4.6.0,!=4.7.0 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/11/92/76a1c94d3afee238333bc0a42b82935dd8f9cf8ce9e336ff87ee14d9e1cf/pytest-8.3.4-py3-none-any.whl + name: pytest + version: 8.3.4 + sha256: 50e16d954148559c9a74109af1eaf0c945ba2d8f30f0a3d3335edde19788b6f6 + requires_dist: + - colorama ; sys_platform == 'win32' + - exceptiongroup>=1.0.0rc8 ; python_full_version < '3.11' + - iniconfig + - packaging + - pluggy>=1.5,<2 + - tomli>=1 ; python_full_version < '3.11' + - argcomplete ; extra == 'dev' + - attrs>=19.2 ; extra == 'dev' + - hypothesis>=3.56 ; extra == 'dev' + - mock ; extra == 'dev' + - pygments>=2.7.2 ; extra == 'dev' + - requests ; extra == 'dev' + - setuptools ; extra == 'dev' + - xmlschema ; extra == 'dev' + requires_python: '>=3.8' +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.11.11-h9e4cc4f_1_cpython.conda + build_number: 1 + sha256: b29ce0836fce55bdff8d5c5b71c4921a23f87d3b950aea89a9e75784120b06b0 + md5: 8387070aa413ce9a8cc35a509fae938b + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Python-2.0 + purls: [] + size: 30624804 + timestamp: 1733409665928 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.11.11-hc22306f_1_cpython.conda + build_number: 1 + sha256: 94e198f6a5affa1431401fca7e3b27fda68c59f5ee726083288bff1f6bed8c7f + md5: 8d81dcd0be5bdcdd98e0f2482bf63784 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Python-2.0 + purls: [] + size: 14647146 + timestamp: 1733409012105 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + purls: + - pkg:pypi/python-dateutil?source=hash-mapping + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: 2660b8059b3ee854bc5d3c6b1fce946e5bd2fe8fbca7827de2c5885ead6209de + md5: 139a8d40c8a2f430df31048949e450de + constrains: + - python 3.11.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6211 + timestamp: 1723823324668 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.11-5_cp311.conda + build_number: 5 + sha256: adc05729b7e0aca7b436e60a86f10822a92185dfcb48d66d6444e3629d3a1f6a + md5: 3b855e3734344134cb56c410f729c340 + constrains: + - python 3.11.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: [] + size: 6308 + timestamp: 1723823096865 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.5.1-py3.11_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: cc2ee559c2104436d8752182986de576d1cc697e2111045a6cc10ac3ed4fb21f + md5: 4e8e3c2f5231d79c0b3540c16d98e542 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.11,<3.12.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.1.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 1572203154 + timestamp: 1729655678747 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.5.1-py3.11_0.tar.bz2 + sha256: 8519364bc14837a5b3461d71d68688daebe332c978c1a203ee9f58ce65100e86 + md5: c1c26d3ce34cc8ad40d6b55c61852714 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.11,<3.12.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + purls: + - pkg:pypi/torch?source=hash-mapping + size: 62801112 + timestamp: 1729651308831 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + purls: [] + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + purls: [] + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py311h2dc5d0c_2.conda + sha256: d107ad62ed5c62764fba9400f2c423d89adf917d687c7f2e56c3bfed605fb5b3 + md5: 014417753f948da1f70d132b2de573be + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 213136 + timestamp: 1737454846598 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py311h4921393_2.conda + sha256: 2af6006c9f692742181f4aa2e0656eb112981ccb0b420b899d3dd42c881bd72f + md5: 250b2ee8777221153fd2de9c279a7efa + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: + - pkg:pypi/pyyaml?source=hash-mapping + size: 196951 + timestamp: 1737454935552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py311h7deb3e3_0.conda + sha256: bd6309ef4629744aaaccd9b33d6389dfe879e9864386137e6e4ecc7e1b9ed0f3 + md5: 52457fbaa0aef8136d5dd7bb8a36db9e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 392547 + timestamp: 1738271109731 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py311h01f2145_0.conda + sha256: 29255e5ca9f0b50d551fce4d5b7745fa11b4e672418a6d88a4c3f1a974dd4e44 + md5: 4c5daee5a983fb515460a2714b612126 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/pyzmq?source=hash-mapping + size: 370170 + timestamp: 1738271259321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + purls: [] + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-h074ec65_10.conda + sha256: 1c7b8a24296bf1309f866d363a1152a796d495f97a87d0c6f35b845e6c153250 + md5: 4b2fa94e6d42231ffee6707dfe578915 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hf886319_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19473 + timestamp: 1735628355599 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-hf736513_10.conda + sha256: 16826ce65b4a391990fa85dd2af7d0cd98549be9e993181f18e6d633185a0bd9 + md5: 4b55d377c0ba17934ab1515b608b8276 + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.11.* *_cp311 + - sentencepiece-python 0.2.0 py311hb1a73f2_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 19753 + timestamp: 1735628583443 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py311hf886319_10.conda + sha256: 6d92d183dbe714d2b2b042542b36e1a875f307c83bde4324f24a6a1ea62400b6 + md5: 90c0c6f0d4d58d2383373e3ab7bc4d19 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2350779 + timestamp: 1735627954130 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py311hb1a73f2_10.conda + sha256: 877e5831eb93d1b18c2218284806d8e6fb623a484c368bb0de785ca8586d97bf + md5: 2c13a5b72d87bad8a5af1f4b100e6a36 + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/sentencepiece?source=hash-mapping + size: 2498193 + timestamp: 1735628323682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: [] + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: [] + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/six?source=hash-mapping + size: 16385 + timestamp: 1733381032766 +- pypi: https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl + name: sniffio + version: 1.3.1 + sha256: 2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/d9/61/f2b52e107b1fc8944b33ef56bf6ac4ebbe16d91b94d2b87ce013bf63fb84/starlette-0.45.3-py3-none-any.whl + name: starlette + version: 0.45.3 + sha256: dfb6d332576f136ec740296c7e8bb8c8a7125044e7c6da30744718880cdd059d + requires_dist: + - anyio>=3.6.2,<5 + - typing-extensions>=3.10.0 ; python_full_version < '3.10' + - httpx>=0.27.0,<0.29.0 ; extra == 'full' + - itsdangerous ; extra == 'full' + - jinja2 ; extra == 'full' + - python-multipart>=0.0.18 ; extra == 'full' + - pyyaml ; extra == 'full' + requires_python: '>=3.9' +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/sympy?source=hash-mapping + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + purls: [] + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + purls: [] + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + purls: [] + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.1.0-py311.tar.bz2 + build_number: 1 + sha256: e07291e5dee2e59a32db462d95ebde2d137ac4cae7f71b222dbbd81fff547a0b + md5: 5fc754aece8ef7de578e4e1282df340e + depends: + - filelock + - python >=3.11,<3.12.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + purls: + - pkg:pypi/triton?source=hash-mapping + size: 245178453 + timestamp: 1727971110674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py311h9ecbd09_0.conda + sha256: afa3489113154b5cb0724b0bf120b62df91f426dabfe5d02f2ba09e90d346b28 + md5: df3aee9c3e44489257a840b8354e77b9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.11,<3.12.0a0 + - python_abi 3.11.* *_cp311 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 855653 + timestamp: 1732616048886 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py311h917b07b_0.conda + sha256: 80b79a7d4ed8e16019b8c634cca66935d18fc98be358c76a6ead8c611306ee14 + md5: 183b74c576dc7f920dae168997dbd1dd + depends: + - __osx >=11.0 + - python >=3.11,<3.12.0a0 + - python >=3.11,<3.12.0a0 *_cpython + - python_abi 3.11.* *_cp311 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + purls: + - pkg:pypi/tornado?source=hash-mapping + size: 858954 + timestamp: 1732616142626 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + purls: + - pkg:pypi/tqdm?source=hash-mapping + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + purls: + - pkg:pypi/traitlets?source=hash-mapping + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + purls: + - pkg:pypi/typing-extensions?source=hash-mapping + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + purls: [] + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + purls: [] + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + purls: [] + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + purls: [] + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + purls: + - pkg:pypi/zipp?source=hash-mapping + size: 21809 + timestamp: 1732827613585 diff --git a/tutorials/hello-magic/main.py b/tutorials/hello-magic/main.py new file mode 100644 index 0000000000..d6f77a6dbe --- /dev/null +++ b/tutorials/hello-magic/main.py @@ -0,0 +1,47 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import subprocess + +from fastapi import FastAPI, HTTPException + +app = FastAPI() + + +@app.get("/") +def root(): + return {"message": "Hello, magic!"} + + +@app.get("/zero") +def zero(): + try: + p = subprocess.Popen( + ["magic", "run", "mojo", "local/zero.mojo"], + stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, + text=True, + ) + while True: + output = p.stdout.readline() + if output == "" and p.poll() is not None: + raise HTTPException( + status_code=500, detail="Failed to produce zero" + ) + + return {"message": f"answer is {output}"} + + except subprocess.SubprocessError: + raise HTTPException( + status_code=500, detail="Failed to execute subprocess" + ) diff --git a/tutorials/hello-magic/mojoproject.toml b/tutorials/hello-magic/mojoproject.toml new file mode 100644 index 0000000000..201ce3b96e --- /dev/null +++ b/tutorials/hello-magic/mojoproject.toml @@ -0,0 +1,30 @@ +[project] +authors = ["Modular "] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +description = "Add a short description here" +name = "hello-magic" +platforms = ["osx-arm64", "linux-64"] +version = "0.1.0" + +[tasks] +hello = "mojo hello.mojo" +dev-server = "fastapi dev main.py" +format = "mojo format ." + +[dependencies] +max = ">=24.4.0,<25" +python = ">=3.8,<3.12" +pytorch = ">=2.5.1,<3" + +[pypi-dependencies] +fastapi = ">=0.115.0" + +[feature.test.tasks] +test = "pytest" + +[feature.test.pypi-dependencies] +pytest = ">=8.3.2, <9" + +[environments] +default = { solve-group = "default" } +test = { features = ["test"], solve-group = "default" } diff --git a/tutorials/helm/max-openai-api/.helmignore b/tutorials/helm/max-openai-api/.helmignore new file mode 100644 index 0000000000..7c4ce2fca1 --- /dev/null +++ b/tutorials/helm/max-openai-api/.helmignore @@ -0,0 +1,19 @@ +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +bin \ No newline at end of file diff --git a/tutorials/helm/max-openai-api/Chart.yaml b/tutorials/helm/max-openai-api/Chart.yaml new file mode 100644 index 0000000000..c930088dd6 --- /dev/null +++ b/tutorials/helm/max-openai-api/Chart.yaml @@ -0,0 +1,28 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +git apiVersion: v2 +appVersion: "0.1.0" +description: The MAX platform unifies the leading AI development frameworks (TensorFlow, PyTorch, ONNX) and hardware backends in order to simplify deployment for AI production teams and accelerate innovation for AI developers. +name: max-openai-api-chart +home: https://www.modular.com/ +keywords: + - machine learning + - inference +sources: + - https://github.com/modular/max +maintainers: + - name: Modular team + email: max-feedback@modular.com + url: https://github.com/modular/max +version: 0.1.0 diff --git a/tutorials/helm/max-openai-api/README.md b/tutorials/helm/max-openai-api/README.md new file mode 100644 index 0000000000..c67353afcc --- /dev/null +++ b/tutorials/helm/max-openai-api/README.md @@ -0,0 +1,197 @@ + + + +# MAX OpenAI API Helm chart + +The MAX platform unifies the leading AI development frameworks (TensorFlow, PyTorch, ONNX) and hardware backends in order to simplify deployment for AI production teams and accelerate innovation for AI developers. + +For more information about using this Helm chart, see the tutorial to [Deploy +Llama 3 on GPU-powered Kubernetes +clusters](https://docs.modular.com/max/tutorials/deploy-max-serve-on-kubernetes/) + +**Homepage:** + +## Source Code + +* + +## Usage + +### Installing the chart + +To install this chart using Helm 3, run the following command: + +```console +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --set huggingfaceRepoId= + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --wait +``` + +The command deploys MAX OpenAI API on the Kubernetes cluster in the default configuration. The Values reference section below lists the parameters that can be configured during installation. + +### Upgrading the chart + +To upgrade the chart with the release name `max-openai-api`: + +```console +helm upgrade max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart +``` + +### Uninstalling the chart + +To uninstall/delete the `max-openai-api` deployment: + +```console +helm delete max-openai-api +``` + +### End-to-end example that provisions an K8s cluster and installs MAX OpenAI API + +To provision a k8s cluster via `eksctl` and then install MAX OpenAI API, run the following commands: + +```console +# provision a k8s cluster (takes 10-15 minutes) +eksctl create cluster \ + --name max-openai-api-demo \ + --region us-east-1 \ + --node-type g5.4xlarge \ + --nodes 1 + +# create a k8s namespace +kubectl create namespace max-openai-api-demo + +# deploy MAX OpenAI API via helm chart (takes 10 minutes) +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --namespace max-openai-api-demo \ + --set huggingfaceRepoId=modularai/Llama-3.1-8B-Instruct-GGUF + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --timeout 10m0s \ + --wait + +# forward the remote k8s port to the local network to access the service locally +# the command is blocking and takes the terminal +# user another terminal for subsequent curl and ctrl-c to stop the port forwarding +POD_NAME=$(kubectl get pods --namespace max-openai-api-demo -l "app.kubernetes.io/name=max-openai-api-chart,app.kubernetes.io/instance=max-openai-api" -o jsonpath="{.items[0].metadata.name}") +CONTAINER_PORT=$(kubectl get pod --namespace max-openai-api-demo $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") +kubectl port-forward $POD_NAME 8000:$CONTAINER_PORT --namespace max-openai-api-demo & + +# test the service +curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "modularai/Llama-3.1-8B-Instruct-GGUF", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + +# uninstall MAX OpenAI API +helm uninstall max-openai-api --namespace max-openai-api-demo + +# Delete the namespace +kubectl delete namespace max-openai-api-demo + +# delete the k8s cluster +eksctl delete cluster \ + --name max-openai-api-demo \ + --region us-east-1 +``` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity to be added to all deployments | +| env | object | `{}` | Environment variables that will be passed into pods | +| envFromSecret | string | `"{{ template \"max.fullname\" . }}-env"` | The name of the secret which we will use to populate env vars in deployed pods This can be useful for secret keys, etc. | +| envFromSecrets | list | `[]` | This can be a list of templated strings | +| envRaw | list | `[]` | Environment variables in RAW format that will be passed into pods | +| envSecret | object | `{}` | Environment variables to pass as secrets | +| fullnameOverride | string | `nil` | Provide a name to override the full names of resources | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.repository | string | `"modular/max-openai-api"` | | +| image.tag | string | `"latest"` | | +| imagePullSecrets | list | `[]` | | +| inferenceServer.affinity | object | `{}` | Affinity to be added to inferenceServer deployment | +| inferenceServer.args | list | See `values.yaml` | Arguments to pass to the node entrypoint. If defined it overwrites the default args value set by .Values.max-serve | +| inferenceServer.autoscaling.enabled | bool | `false` | | +| inferenceServer.autoscaling.maxReplicas | int | `2` | | +| inferenceServer.autoscaling.minReplicas | int | `1` | | +| inferenceServer.autoscaling.targetCPUUtilizationPercentage | int | `80` | | +| inferenceServer.containerSecurityContext | object | `{}` | | +| inferenceServer.deploymentAnnotations | object | `{}` | Annotations to be added to inferenceServer deployment | +| inferenceServer.deploymentLabels | object | `{}` | Labels to be added to inferenceServer deployment | +| inferenceServer.env | object | `{}` | | +| inferenceServer.extraContainers | list | `[]` | Launch additional containers into inferenceServer pod | +| inferenceServer.livenessProbe.failureThreshold | int | `3` | | +| inferenceServer.livenessProbe.httpGet.path | string | `"/v1/health"` | | +| inferenceServer.livenessProbe.httpGet.port | string | `"http"` | | +| inferenceServer.livenessProbe.initialDelaySeconds | int | `1` | | +| inferenceServer.livenessProbe.periodSeconds | int | `15` | | +| inferenceServer.livenessProbe.successThreshold | int | `1` | | +| inferenceServer.livenessProbe.timeoutSeconds | int | `1` | | +| inferenceServer.nodeSelector | object | `{}` | NodeSelector to be added to inferenceServer deployment | +| inferenceServer.podAnnotations | object | `{}` | Annotations to be added to inferenceServer pods | +| inferenceServer.podLabels | object | `{}` | Labels to be added to inferenceServer pods | +| inferenceServer.podSecurityContext | object | `{}` | | +| inferenceServer.readinessProbe.failureThreshold | int | `3` | | +| inferenceServer.readinessProbe.httpGet.path | string | `"/v1/health"` | | +| inferenceServer.readinessProbe.httpGet.port | string | `"http"` | | +| inferenceServer.readinessProbe.initialDelaySeconds | int | `1` | | +| inferenceServer.readinessProbe.periodSeconds | int | `15` | | +| inferenceServer.readinessProbe.successThreshold | int | `1` | | +| inferenceServer.readinessProbe.timeoutSeconds | int | `1` | | +| inferenceServer.replicaCount | int | `1` | | +| inferenceServer.resources | object | `{}` | Resource settings for the inferenceServer pods - these settings overwrite existing values from the global resources object defined above. | +| inferenceServer.startupProbe.failureThreshold | int | `60` | | +| inferenceServer.startupProbe.httpGet.path | string | `"/v1/health"` | | +| inferenceServer.startupProbe.httpGet.port | string | `"http"` | | +| inferenceServer.startupProbe.initialDelaySeconds | int | `1` | | +| inferenceServer.startupProbe.periodSeconds | int | `5` | | +| inferenceServer.startupProbe.successThreshold | int | `1` | | +| inferenceServer.startupProbe.timeoutSeconds | int | `1` | | +| inferenceServer.strategy | object | `{}` | | +| inferenceServer.tolerations | list | `[]` | Tolerations to be added to inferenceServer deployment | +| inferenceServer.topologySpreadConstraints | list | `[]` | TopologySpreadConstrains to be added to inferenceServer deployments | +| inferenceServer.volumeMounts | list | `[]` | Volumes to mount into inferenceServer pod | +| inferenceServer.volumes | list | `[]` | Volumes to mount into inferenceServer pod | +| ingress.annotations | object | `{}` | | +| ingress.enabled | bool | `false` | | +| ingress.extraHostsRaw | list | `[]` | | +| ingress.hosts | list | `[]` | | +| ingress.ingressClassName | string | `nil` | | +| ingress.path | string | `"/"` | | +| ingress.pathType | string | `"ImplementationSpecific"` | | +| ingress.tls | list | `[]` | | +| maxServe | object | `{"cacheStrategy":"continuous","huggingfaceRepoId":"modularai/Llama-3.1-8B-Instruct-GGUF","maxBatchSize":"250","maxLength":"2048","maxNumSteps":"10"}` | MAX Serve arguments | +| nameOverride | string | `nil` | Provide a name to override the name of the chart | +| nodeSelector | object | `{}` | NodeSelector to be added to all deployments | +| resources | object | `{}` | | +| runAsUser | int | `0` | User ID directive. This user must have enough permissions to run the bootstrap script Running containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure | +| service.annotations | object | `{}` | | +| service.loadBalancerIP | string | `nil` | | +| service.ports[0].name | string | `"http"` | | +| service.ports[0].port | int | `8000` | | +| service.ports[0].protocol | string | `"TCP"` | | +| service.ports[0].targetPort | int | `8000` | | +| service.type | string | `"ClusterIP"` | | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `false` | Create custom service account for MAX Serving. If create: true and serviceAccountName is not provided, `max.fullname` will be used. | +| serviceAccountName | string | `nil` | Specify service account name to be used | +| tolerations | list | `[]` | Tolerations to be added to all deployments | +| topologySpreadConstraints | list | `[]` | TopologySpreadConstraints to be added to all deployments | +| volumeMounts | list | `[]` | | +| volumes | list | `[]` | | diff --git a/tutorials/helm/max-openai-api/README.md.gotmpl b/tutorials/helm/max-openai-api/README.md.gotmpl new file mode 100644 index 0000000000..f64ee8a86c --- /dev/null +++ b/tutorials/helm/max-openai-api/README.md.gotmpl @@ -0,0 +1,112 @@ + + + +# MAX OpenAI API Helm chart + +{{ template "chart.deprecationWarning" . }} + +{{ template "chart.description" . }} + +{{ template "chart.homepageLine" . }} + +{{ template "chart.sourcesSection" . }} + +## Usage + +### Installing the chart + +To install this chart using Helm 3, run the following command: + +```console +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --set huggingfaceRepoId= + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --wait +``` + +The command deploys MAX OpenAI API on the Kubernetes cluster in the default configuration. The Values reference section below lists the parameters that can be configured during installation. + +### Upgrading the chart + +To upgrade the chart with the release name `max-openai-api`: + +```console +helm upgrade max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart +``` + +### Uninstalling the chart + +To uninstall/delete the `max-openai-api` deployment: + +```console +helm delete max-openai-api +``` + +### End-to-end example that provisions an K8s cluster and installs MAX OpenAI API + +To provision a k8s cluster via `eksctl` and then install MAX OpenAI API, run the following commands: + +```console +# provision a k8s cluster (takes 10-15 minutes) +eksctl create cluster \ + --name max-openai-api-demo \ + --region us-east-1 \ + --node-type g5.4xlarge \ + --nodes 1 + +# create a k8s namespace +kubectl create namespace max-openai-api-demo + +# deploy MAX OpenAI API via helm chart (takes 10 minutes) +helm install max-openai-api oci://registry-1.docker.io/modular/max-openai-api-chart \ + --version \ + --namespace max-openai-api-demo \ + --set huggingfaceRepoId=modularai/Llama-3.1-8B-Instruct-GGUF + --set maxServe.maxLength=512 \ + --set maxServe.maxBatchSize=16 \ + --set envSecret.HF_TOKEN= \ + --set env.HF_HUB_ENABLE_HF_TRANSFER=1 \ + --timeout 10m0s \ + --wait + +# forward the remote k8s port to the local network to access the service locally +# the command is blocking and takes the terminal +# user another terminal for subsequent curl and ctrl-c to stop the port forwarding +POD_NAME=$(kubectl get pods --namespace max-openai-api-demo -l "app.kubernetes.io/name=max-openai-api-chart,app.kubernetes.io/instance=max-openai-api" -o jsonpath="{.items[0].metadata.name}") +CONTAINER_PORT=$(kubectl get pod --namespace max-openai-api-demo $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") +kubectl port-forward $POD_NAME 8000:$CONTAINER_PORT --namespace max-openai-api-demo & + +# test the service +curl -N http://localhost:8000/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "modularai/Llama-3.1-8B-Instruct-GGUF", + "stream": true, + "messages": [ + {"role": "system", "content": "You are a helpful assistant."}, + {"role": "user", "content": "Who won the world series in 2020?"} + ] + }' + +# uninstall MAX OpenAI API +helm uninstall max-openai-api --namespace max-openai-api-demo + +# Delete the namespace +kubectl delete namespace max-openai-api-demo + +# delete the k8s cluster +eksctl delete cluster \ + --name max-openai-api-demo \ + --region us-east-1 +``` + + +{{ template "chart.requirementsSection" . }} + +{{ template "chart.valuesSection" . }} diff --git a/tutorials/helm/max-openai-api/templates/NOTES.txt b/tutorials/helm/max-openai-api/templates/NOTES.txt new file mode 100644 index 0000000000..b6ed1cdc8d --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} + {{- range .Values.ingress.hosts }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }} + {{- end }} +{{- else if contains "NodePort" .Values.service.type }} + NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "max.fullname" . }}) + NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w {{ template "max.fullname" . }}' + SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "max.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ template "max.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "The application is available at the following DNS name from within your cluster:" + echo "{{ .Release.Name }}.{{ .Release.Namespace }}.svc.cluster.local:$CONTAINER_PORT" + echo "Or use the following command to forward ports and visit it locally at http://127.0.0.1:8000" + echo "kubectl port-forward $POD_NAME 8000:$CONTAINER_PORT --namespace {{ .Release.Namespace }}" +{{- end }} diff --git a/tutorials/helm/max-openai-api/templates/_helpers.tpl b/tutorials/helm/max-openai-api/templates/_helpers.tpl new file mode 100644 index 0000000000..47a043060a --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/_helpers.tpl @@ -0,0 +1,43 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "max.name" -}} + {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "max.fullname" -}} + {{- if .Values.fullnameOverride -}} + {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} + {{- else -}} + {{- $name := default .Chart.Name .Values.nameOverride -}} + {{- if contains $name .Release.Name -}} + {{- .Release.Name | trunc 63 | trimSuffix "-" -}} + {{- else -}} + {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{/* +Create the name of the service account to use +*/}} +{{- define "max.serviceAccountName" -}} + {{- if .Values.serviceAccount.create -}} + {{- default (include "max.fullname" .) .Values.serviceAccountName -}} + {{- else -}} + {{- default "default" .Values.serviceAccountName -}} + {{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "max.chart" -}} + {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/tutorials/helm/max-openai-api/templates/deployment.yaml b/tutorials/helm/max-openai-api/templates/deployment.yaml new file mode 100644 index 0000000000..9ce59c5c55 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/deployment.yaml @@ -0,0 +1,181 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "max.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.inferenceServer.deploymentLabels }} + {{- toYaml .Values.inferenceServer.deploymentLabels | nindent 4 }} + {{- end }} + {{- if .Values.inferenceServer.deploymentAnnotations }} + annotations: {{- toYaml .Values.inferenceServer.deploymentAnnotations | nindent 4 }} + {{- end }} +spec: + {{- if not .Values.inferenceServer.autoscaling.enabled }} + replicas: {{ .Values.inferenceServer.replicaCount }} + {{- end }} + {{- if .Values.inferenceServer.strategy }} + strategy: {{- toYaml .Values.inferenceServer.strategy | nindent 4 }} + {{- end }} + selector: + matchLabels: + app.kubernetes.io/name: {{ template "max.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + annotations: + # Force reload on changes + checksum/envSecret: {{ .Values.envSecret | toYaml | sha256sum }} + {{- if .Values.inferenceServer.podAnnotations }} + {{- toYaml .Values.inferenceServer.podAnnotations | nindent 8 }} + {{- end }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.inferenceServer.podLabels }} + {{- toYaml .Values.inferenceServer.podLabels | nindent 8 }} + {{- end }} + spec: + {{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }} + serviceAccountName: {{ template "max.serviceAccountName" . }} + {{- end }} + securityContext: + runAsUser: {{ .Values.runAsUser }} + {{- if .Values.inferenceServer.podSecurityContext }} + {{- toYaml .Values.inferenceServer.podSecurityContext | nindent 8 }} + {{- end }} + {{- if .Values.inferenceServer.initContainers }} + initContainers: {{- tpl (toYaml .Values.inferenceServer.initContainers) . | nindent 6 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- if .Values.inferenceServer.containerSecurityContext }} + securityContext: {{- toYaml .Values.inferenceServer.containerSecurityContext | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.args }} + args: {{- toYaml .Values.inferenceServer.args | nindent 12 }} + {{- else }} + args: [ + "--model-path={{ .Values.maxServe.huggingfaceRepoId }}", + "--max-length={{ .Values.maxServe.maxLength }}", + "--max-batch-size={{ .Values.maxServe.maxBatchSize }}", + "--cache-strategy={{ .Values.maxServe.cacheStrategy }}", + "--max-num-steps={{ .Values.maxServe.maxNumSteps }}"] + {{- end }} + env: + {{- range $key, $value := .Values.env }} + - name: {{ $key | quote}} + value: {{ $value | quote }} + {{- end }} + {{- range $key, $value := .Values.inferenceServer.env }} + - name: {{ $key | quote}} + value: {{ $value | quote }} + {{- end }} + {{- if .Values.envRaw }} + {{- toYaml .Values.envRaw | nindent 12 }} + {{- end }} + envFrom: + - secretRef: + name: {{ tpl .Values.envFromSecret . | quote }} + {{- range .Values.envFromSecrets }} + - secretRef: + name: {{ tpl . $ | quote }} + {{- end }} + {{- if or .Values.volumeMounts .Values.inferenceServer.volumeMounts }} + volumeMounts: + {{- with .Values.volumeMounts }} + {{- tpl (toYaml .) $ | nindent 12 -}} + {{- end }} + {{- with .Values.inferenceServer.volumeMounts }} + {{- tpl (toYaml .) $ | nindent 12 -}} + {{- end }} + {{- end }} + ports: + {{- range .Values.service.ports }} + - name: {{ .name }} + containerPort: {{ .targetPort }} + {{- end }} + {{- if .Values.inferenceServer.startupProbe }} + startupProbe: {{- .Values.inferenceServer.startupProbe | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.readinessProbe }} + readinessProbe: {{- .Values.inferenceServer.readinessProbe | toYaml | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.livenessProbe }} + livenessProbe: {{- .Values.inferenceServer.livenessProbe | toYaml | nindent 12 }} + {{- end }} + resources: + {{- if .Values.inferenceServer.resources }} + {{- toYaml .Values.inferenceServer.resources | nindent 12 }} + {{- else }} + {{- toYaml .Values.resources | nindent 12 }} + {{- end }} + {{- if .Values.inferenceServer.extraContainers }} + {{- toYaml .Values.inferenceServer.extraContainers | nindent 8 }} + {{- end }} + {{- if or .Values.nodeSelector .Values.inferenceServer.nodeSelector }} + nodeSelector: + {{- with .Values.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.nodeSelector }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if or .Values.affinity .Values.inferenceServer.affinity }} + affinity: + {{- with .Values.affinity }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.affinity }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if or .Values.topologySpreadConstraints .Values.inferenceServer.topologySpreadConstraints }} + topologySpreadConstraints: + {{- with .Values.topologySpreadConstraints }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.topologySpreadConstraints }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if or .Values.tolerations .Values.inferenceServer.tolerations }} + tolerations: + {{- with .Values.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.inferenceServer.tolerations }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if .Values.imagePullSecrets }} + imagePullSecrets: {{- toYaml .Values.imagePullSecrets | nindent 8 }} + {{- end }} + {{- if or .Values.volumes .Values.inferenceServer.volumes }} + volumes: + {{- with .Values.volumes }} + {{- tpl (toYaml .) $ | nindent 8 -}} + {{- end }} + {{- with .Values.inferenceServer.volumes }} + {{- tpl (toYaml .) $ | nindent 8 -}} + {{- end }} + {{- end }} diff --git a/tutorials/helm/max-openai-api/templates/hpa.yaml b/tutorials/helm/max-openai-api/templates/hpa.yaml new file mode 100644 index 0000000000..ab5626d79a --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/hpa.yaml @@ -0,0 +1,47 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +{{- if .Values.inferenceServer.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "max.fullname" . }}-hpa + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "max.fullname" . }} + minReplicas: {{ .Values.inferenceServer.autoscaling.minReplicas }} + maxReplicas: {{ .Values.inferenceServer.autoscaling.maxReplicas }} + metrics: + {{- if .Values.inferenceServer.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.inferenceServer.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.inferenceServer.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.inferenceServer.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/tutorials/helm/max-openai-api/templates/ingress.yaml b/tutorials/helm/max-openai-api/templates/ingress.yaml new file mode 100644 index 0000000000..e02fc3f027 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/ingress.yaml @@ -0,0 +1,57 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +{{ if .Values.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ template "max.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.ingress.annotations }} + annotations: {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if .Values.ingress.ingressClassName }} + ingressClassName: {{ .Values.ingress.ingressClassName }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ . }} + http: + paths: + - path: {{ $.Values.ingress.path }} + pathType: {{ $.Values.ingress.pathType }} + backend: + service: + name: {{ template "max.fullname" . }} + port: + name: http + {{- end }} + {{- if .Values.ingress.extraHostsRaw }} + {{- toYaml .Values.ingress.extraHostsRaw | nindent 4 }} + {{- end }} +{{- end }} diff --git a/tutorials/helm/max-openai-api/templates/secret-env.yaml b/tutorials/helm/max-openai-api/templates/secret-env.yaml new file mode 100644 index 0000000000..1f4649686e --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/secret-env.yaml @@ -0,0 +1,29 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## +apiVersion: v1 +kind: Secret +metadata: + name: {{ template "max.fullname" . }}-env + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} +type: Opaque +stringData: + {{- if .Values.envSecret }} + {{- range $key, $value := .Values.envSecret }} + {{ $key }}: {{ $value | quote }} + {{- end }} + {{- end }} diff --git a/tutorials/helm/max-openai-api/templates/service.yaml b/tutorials/helm/max-openai-api/templates/service.yaml new file mode 100644 index 0000000000..3f7d148592 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/service.yaml @@ -0,0 +1,34 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +apiVersion: v1 +kind: Service +metadata: + name: {{ template "max.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- with .Values.service.annotations }} + annotations: {{- toYaml . | nindent 4 }} + {{- end }} +spec: + type: {{ .Values.service.type }} + ports: {{- .Values.service.ports | toYaml | nindent 2 }} + selector: + app.kubernetes.io/name: {{ template "max.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.service.loadBalancerIP }} + loadBalancerIP: {{ .Values.service.loadBalancerIP }} + {{- end }} diff --git a/tutorials/helm/max-openai-api/templates/serviceaccount.yaml b/tutorials/helm/max-openai-api/templates/serviceaccount.yaml new file mode 100644 index 0000000000..f1aee92905 --- /dev/null +++ b/tutorials/helm/max-openai-api/templates/serviceaccount.yaml @@ -0,0 +1,28 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +{{- if .Values.serviceAccount.create }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "max.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} + labels: + app.kubernetes.io/name: {{ template "max.name" . }} + helm.sh/chart: {{ template "max.chart" . }} + app.kubernetes.io/managed-by: {{ .Release.Service }} + app.kubernetes.io/instance: {{ .Release.Name }} + {{- if .Values.serviceAccount.annotations }} + annotations: {{- toYaml .Values.serviceAccount.annotations | nindent 4 }} + {{- end }} +{{- end -}} diff --git a/tutorials/helm/max-openai-api/values.yaml b/tutorials/helm/max-openai-api/values.yaml new file mode 100644 index 0000000000..d87d815cfe --- /dev/null +++ b/tutorials/helm/max-openai-api/values.yaml @@ -0,0 +1,239 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +# Default values for the MAX Serving Helm chart. + +# A README is automatically generated from this file to document it, using helm-docs (see https://github.com/norwoodj/helm-docs) +# To update it, install helm-docs and run helm-docs from the root of this chart + +# -- Provide a name to override the name of the chart +nameOverride: ~ +# -- Provide a name to override the full names of resources +fullnameOverride: ~ + +# -- User ID directive. This user must have enough permissions to run the bootstrap script +# Running containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure +runAsUser: 0 + +# -- Specify service account name to be used +serviceAccountName: ~ +serviceAccount: + # -- Create custom service account for MAX Serving. If create: true and serviceAccountName is not provided, `max.fullname` will be used. + create: false + annotations: {} + +# -- Environment variables that will be passed into pods +env: {} + +# -- Environment variables in RAW format that will be passed into pods +envRaw: [] + +# -- The name of the secret which we will use to populate env vars in deployed pods +# This can be useful for secret keys, etc. +envFromSecret: '{{ template "max.fullname" . }}-env' +# -- This can be a list of templated strings +envFromSecrets: [] + +# -- Environment variables to pass as secrets +envSecret: + {} + # # AWS security credentials: https://docs.aws.amazon.com/IAM/latest/UserGuide/security-creds.html + # AWS_ACCESS_KEY_ID: ... + # AWS_SECRET_ACCESS_KEY: ... + # AWS_SESSION_TOKEN: ... + # # Google API Keys + # GOOGLE_KEY: ... + # GOOGLE_SECRET: ... + +volumes: + [] + # - name: customConfig + # configMap: + # name: '{{ template "max.fullname" . }}-custom-config' + # - name: additionalSecret + # secret: + # secretName: my-secret + # defaultMode: 0600 + +volumeMounts: + [] + # - name: customConfig + # mountPath: /mnt/config + # readOnly: true + # - name: additionalSecret: + # mountPath: /mnt/secret + +image: + repository: "docker.modular.com/modular/max-openai-api" + tag: "latest" + pullPolicy: IfNotPresent + +# -- MAX Serve arguments +maxServe: + huggingfaceRepoId: modularai/Llama-3.1-8B-Instruct-GGUF + maxLength: "2048" + maxBatchSize: "250" + cacheStrategy: "continuous" + maxNumSteps: "10" + +imagePullSecrets: [] + +service: + type: ClusterIP + # you may want to have a headless service if use grpc protocol + # https://kubernetes.io/docs/concepts/services-networking/service/#headless-services + # https://github.com/grpc/grpc/blob/57dacad8c761a12de3e5eafa45f190015c73cccb/doc/load-balancing.md + # clusterIP: None + ports: + - name: http + protocol: TCP + port: 8000 + targetPort: 8000 + annotations: + {} + # cloud.google.com/load-balancer-type: "Internal" + loadBalancerIP: ~ + +ingress: + enabled: false + ingressClassName: ~ + annotations: + {} + # kubernetes.io/tls-acme: "true" + ## Extend timeout to allow long running queries. + # nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" + # nginx.ingress.kubernetes.io/proxy-read-timeout: "300" + # nginx.ingress.kubernetes.io/proxy-send-timeout: "300" + path: / + pathType: ImplementationSpecific + hosts: [] + tls: [] + extraHostsRaw: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: + {} + # We do not specify default resources and leave this as a conscious + # choice for the user. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # The limits below will apply to all MAX Serving components. To set individual resource limitations refer to the pod specific values below. + # The pod specific values will overwrite anything that is set here. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# MAX Serving node configuration +inferenceServer: + replicaCount: 1 + autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 2 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + + # -- Arguments to pass to the node entrypoint. If defined it overwrites the default args value set by .Values.max-serve + # @default -- See `values.yaml` + args: [] + # - "--model-path=modularai/Llama-3.1-8B-Instruct-GGUF", + # - "--max-length=2048", + # - "--max-batch-size=250", + # - "--cache-strategy=continuous", + # - "--max-num-steps=10", + + env: {} + # Limit number of CPUs that MAX Serving and its Inference Engine can use + # MODULAR_AsyncRT_CPU_MAX: 16 + # -- Volumes to mount into inferenceServer pod + volumes: [] + # -- Volumes to mount into inferenceServer pod + volumeMounts: [] + # -- Launch additional containers into inferenceServer pod + extraContainers: [] + # -- Annotations to be added to inferenceServer deployment + deploymentAnnotations: {} + # -- Labels to be added to inferenceServer deployment + deploymentLabels: {} + # -- NodeSelector to be added to inferenceServer deployment + nodeSelector: {} + # -- Tolerations to be added to inferenceServer deployment + tolerations: [] + # -- Affinity to be added to inferenceServer deployment + affinity: {} + # -- TopologySpreadConstrains to be added to inferenceServer deployments + topologySpreadConstraints: [] + # -- Annotations to be added to inferenceServer pods + podAnnotations: {} + # -- Labels to be added to inferenceServer pods + podLabels: {} + startupProbe: + httpGet: + path: /v1/health + port: http + initialDelaySeconds: 1 + timeoutSeconds: 1 + failureThreshold: 60 + periodSeconds: 5 + successThreshold: 1 + livenessProbe: + httpGet: + path: /v1/health + port: http + initialDelaySeconds: 1 + timeoutSeconds: 1 + failureThreshold: 3 + periodSeconds: 15 + successThreshold: 1 + readinessProbe: + httpGet: + path: /v1/health + port: http + initialDelaySeconds: 1 + timeoutSeconds: 1 + failureThreshold: 3 + periodSeconds: 15 + successThreshold: 1 + # -- Resource settings for the inferenceServer pods - these settings overwrite existing values from the global resources object defined above. + resources: + {} + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + podSecurityContext: {} + containerSecurityContext: {} + strategy: + {} + # type: RollingUpdate + # rollingUpdate: + # maxSurge: 25% + # maxUnavailable: 25% + +# -- NodeSelector to be added to all deployments +nodeSelector: {} + +# -- Tolerations to be added to all deployments +tolerations: [] + +# -- Affinity to be added to all deployments +affinity: {} + +# -- TopologySpreadConstraints to be added to all deployments +topologySpreadConstraints: [] diff --git a/tutorials/max-graph-api/.gitattributes b/tutorials/max-graph-api/.gitattributes new file mode 100644 index 0000000000..07fe41c52c --- /dev/null +++ b/tutorials/max-graph-api/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/max-graph-api/.gitignore b/tutorials/max-graph-api/.gitignore new file mode 100644 index 0000000000..1ef4bed3a8 --- /dev/null +++ b/tutorials/max-graph-api/.gitignore @@ -0,0 +1,7 @@ +# pixi environments +.pixi +*.egg-info +# magic environments +.magic +# MNIST data +data diff --git a/tutorials/max-graph-api/README.md b/tutorials/max-graph-api/README.md new file mode 100644 index 0000000000..a96f37787e --- /dev/null +++ b/tutorials/max-graph-api/README.md @@ -0,0 +1,7 @@ +# Tutorial: MAX Graph API + +This repository contains the code for +[Get started with MAX Graph](https://docs.modular.com/max/tutorials/get-started-with-max-graph) +tutorial. + +Please refer to that page for more information. diff --git a/tutorials/max-graph-api/add.mojo b/tutorials/max-graph-api/add.mojo new file mode 100644 index 0000000000..ffedee6d3d --- /dev/null +++ b/tutorials/max-graph-api/add.mojo @@ -0,0 +1,44 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max import engine +from max.graph import Graph, TensorType, Type +from max.tensor import Tensor + + +def main(): + # 1. define add graph + graph = Graph( + in_types=List[Type]( + TensorType(DType.float32, 1), TensorType(DType.float32, 1) + ) + ) + out = graph[0] + graph[1] + graph.output(out) + graph.verify() + print("finall graph:", graph) + # 2. load and compile the graph + session = engine.InferenceSession() + model = session.load(graph) + print("input names are:") + for input_name in model.get_model_input_names(): + print(input_name[]) + + # 3. Execute / run the graph with some inputs + print("set some input values:") + input0 = Tensor[DType.float32](List[Float32](1.0)) + print("input0:", input0) + input1 = Tensor[DType.float32](List[Float32](1.0)) + print("input1:", input1) + ret = model.execute("input0", input0^, "input1", input1^) + print("result:", ret.get[DType.float32]("output0")) diff --git a/tutorials/max-graph-api/add.png b/tutorials/max-graph-api/add.png new file mode 100644 index 0000000000..46a8ad114c Binary files /dev/null and b/tutorials/max-graph-api/add.png differ diff --git a/tutorials/max-graph-api/magic.lock b/tutorials/max-graph-api/magic.lock new file mode 100644 index 0000000000..dd772b0a5b --- /dev/null +++ b/tutorials/max-graph-api/magic.lock @@ -0,0 +1,4414 @@ +version: 6 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.modular.com/max-nightly/ + - url: https://conda.anaconda.org/pytorch/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-7.1.0-gpl_ha1cb39d_715.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.20.6-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-hba53ac1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2025.0.0-h4d9b6c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2025.0.0-h4d9b6c2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2025.0.0-h981d57b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2025.0.0-hdc3f47d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2025.0.0-h981d57b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2025.0.0-h6363af5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2025.0.0-h6363af5_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2025.0.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2025.0.0-h630ec5c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2025.0.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.22.0-h8a09558_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.14.1-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.4.0-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.0.0-py312.tar.bz2 + - conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.19.0-py312_cu124.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.41-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + osx-arm64: + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.4.0-py3.12_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + - conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.19.0-py312_cpu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +packages: +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux + license: None + size: 2562 + timestamp: 1578324546067 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2 + build_number: 2 + sha256: 84a66275da3a66e3f3e70e9d8f10496d807d01a9e4ec16cd2274cc5e28c478fc + md5: 562b26ba2e19059551a811e72ab7f793 + depends: + - _libgcc_mutex 0.1 conda_forge + - llvm-openmp >=9.0.1 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 5744 + timestamp: 1650742457817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 + md5: ae1370588aa6a5157c34c73e9bbb36a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 560238 + timestamp: 1731489643707 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 + md5: 346722a0be40f6edc53f12640d301338 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2706396 + timestamp: 1718551242397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_1.tar.bz2 + sha256: 82c13b1772c21fc4a17441734de471d3aabf82b61db9b11f4a1bd04a9c4ac324 + md5: d9c69a24ad678ffce24c6543a0176b00 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 71042 + timestamp: 1660065501192 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2 + build_number: 16 + sha256: 87056ebdc90b6d1ea6726d04d42b844cc302112e80508edbf7bf1f1a4fd3fed2 + md5: c196a26abf6b4f132c88828ab7c2231c + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - blas-devel 3.9.0 16_linux64_mkl + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - libgcc-ng >=12 + - libgfortran-ng + - libgfortran5 >=10.4.0 + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - llvm-openmp >=14.0.4 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 13258 + timestamp: 1660094704275 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: a7da65ca4e0322317cbc4d387c4a5f075cdc7fcd12ad9f7f18da758c7532749a + md5: 3f92c1c9e1c0e183462c5071aa02cae1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - mkl >=2022.1.0,<2023.0a0 + - mkl-devel 2022.1.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 12630 + timestamp: 1660094595212 +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda + sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af + md5: a83c2ef76ccb11bc2349f4f17696b15d + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 339360 + timestamp: 1725268143995 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda + sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 + md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2025.1.31-hbcca054_0.conda + sha256: bf832198976d559ab44d6cdb315642655547e26d826e34da67cbee6624cda189 + md5: 19f3a56f68d2fd06c516076bff482c52 + arch: x86_64 + platform: linux + license: ISC + size: 158144 + timestamp: 1738298224464 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2025.1.31-hf0a4a13_0.conda + sha256: 7e12816618173fe70f5c638b72adf4bfd4ddabf27794369bb17871c5bb75b9f9 + md5: 3569d6a9141adc64d2fe4797f3289e06 + arch: arm64 + platform: osx + license: ISC + size: 158425 + timestamp: 1738298167688 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 + md5: b34c2833a1f56db610aeb27f206d800d + depends: + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-only or MPL-1.1 + size: 978868 + timestamp: 1733790976384 +- conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2025.1.31-pyhd8ed1ab_0.conda + sha256: 42a78446da06a2568cb13e69be3355169fbd0ea424b00fc80b7d840f5baaacf3 + md5: c207fa5ac7ea99b149344385a9c0880d + depends: + - python >=3.9 + license: ISC + size: 162721 + timestamp: 1739515973129 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda + sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f + md5: 19a5456f72f505881ba493979777b24e + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 281206 + timestamp: 1725560813378 +- conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda + sha256: c920d23cd1fcf565031c679adb62d848af60d6fbb0edc2d50ba475cea4f0d8ab + md5: f22f4d4970e09d68a10b922cbb0408d3 + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 84705 + timestamp: 1734858922844 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.9-py312hd8ed1ab_0.conda + noarch: generic + sha256: f5c7ad0bd23fa8645ac279d99bddba656ff61483dc6312af12aae13910dfb210 + md5: a5b10f166467fecec692abaee84d16aa + depends: + - python 3.12.9.* + - python_abi * *_cp312 + license: Python-2.0 + size: 44836 + timestamp: 1739519561557 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cudart-12.4.127-he02047a_2.conda + sha256: d8ad0be647dad6378119c110572bbf9f6b1e8c820393ed159d45f02588979c07 + md5: a748faa52331983fc3adcc3b116fe0e4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-cudart_linux-64 12.4.127 h85509e4_2 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 22563 + timestamp: 1715710703269 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-cudart_linux-64-12.4.127-h85509e4_2.conda + sha256: 1f1b3e0bf6b5e665860ecbdf509c1e02760c14d25e3f3893a712f90f7f8a5abc + md5: 329163110a96514802e9e64d971edf43 + depends: + - cuda-version >=12.4,<12.5.0a0 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 186886 + timestamp: 1715710690964 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-cupti-12.4.127-he02047a_2.conda + sha256: db9ebc57fd583711bbdd12e54d00e4153a7b414f929f77fca2f44547c02204b8 + md5: 46422ef1b1161fb180027e50c598ecd0 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 1918773 + timestamp: 1715665119069 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-libraries-12.4.1-ha770c72_1.conda + sha256: cb30e83f33c7480caa68a1e35e6ff4102d17ff0a94239ca18555afff1df2f70e + md5: 6bb3f998485d4344a7539e0b218b3fc1 + depends: + - cuda-cudart 12.4.127.* + - cuda-nvrtc 12.4.127.* + - cuda-opencl 12.4.127.* + - libcublas 12.4.5.8.* + - libcufft 11.2.1.3.* + - libcufile 1.9.1.3.* + - libcurand 10.3.5.147.* + - libcusolver 11.6.1.9.* + - libcusparse 12.3.1.170.* + - libnpp 12.2.5.30.* + - libnvfatbin 12.4.127.* + - libnvjitlink 12.4.127.* + - libnvjpeg 12.3.1.117.* + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20180 + timestamp: 1713304266920 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvrtc-12.4.127-he02047a_2.conda + sha256: c4aba5e152526db7cad7c8a5191497b0c6365c912ed845dc9c427d29893486a1 + md5: 80baf6262f4a1a0dde42d85aaa393402 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 18825627 + timestamp: 1715711095870 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-nvtx-12.4.127-he02047a_2.conda + sha256: 8f499785edaec6198a934e8a9dd1f8b6f79aabcc135962d6050dd7328c76d3dc + md5: 656a004b6e44f50ce71c65cab0d429b4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 31691 + timestamp: 1715731339952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cuda-opencl-12.4.127-he02047a_1.conda + sha256: 75d912a70719a9d0bca9f234a79a857815d8feec3c54c145e6e41589de4ff5be + md5: 1e98deda07c14d26c80d124cf0eb011a + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - ocl-icd >=2.3.2,<3.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 30406 + timestamp: 1715711329543 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.1-ha804496_0.conda + sha256: 61a593347c91a9bcd18329f7aa780bd1fb1e20dd1b61b16a451bd4a6b60dabf0 + md5: 48829f4ef6005ae8d4867b99168ff2b8 + depends: + - __linux + - cuda-libraries 12.4.1.* + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 20034 + timestamp: 1712683445348 +- conda: https://conda.anaconda.org/conda-forge/noarch/cuda-version-12.4-h3060b56_3.conda + sha256: 571d32fbd0dc8df6e85c14d1757549927e272af9c70b935d7e3a553ab0b0b4da + md5: c9a3fe8b957176e1a8452c6f3431b0d8 + constrains: + - cudatoolkit 12.4|12.4.* + - __cuda >=12 + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 21022 + timestamp: 1709765922936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d + depends: + - expat >=2.4.2,<3.0a0 + - libgcc-ng >=9.4.0 + - libglib >=2.70.2,<3.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 618596 + timestamp: 1640112124844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda + sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 + md5: 1d6afef758879ef5ee78127eb4cd2c4a + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat 2.6.4 h5888daf_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 138145 + timestamp: 1730967050578 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-7.1.0-gpl_ha1cb39d_715.conda + sha256: 6effcce8adc5b1d9a22e021c3121eaa6b6fbe93467956765dbebd0f6f5839469 + md5: 18046f211e7aaeae13430827b7a8d692 + depends: + - __glibc >=2.17,<3.0.a0 + - alsa-lib >=1.2.13,<1.3.0a0 + - aom >=3.9.1,<3.10.0a0 + - bzip2 >=1.0.8,<2.0a0 + - dav1d >=1.2.1,<1.2.2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - gmp >=6.3.0,<7.0a0 + - harfbuzz >=10.3.0,<11.0a0 + - lame >=3.100,<3.101.0a0 + - libass >=0.17.3,<0.17.4.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libopenvino >=2025.0.0,<2025.0.1.0a0 + - libopenvino-auto-batch-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-auto-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-hetero-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-intel-cpu-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-intel-gpu-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-intel-npu-plugin >=2025.0.0,<2025.0.1.0a0 + - libopenvino-ir-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-onnx-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-paddle-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-pytorch-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-tensorflow-frontend >=2025.0.0,<2025.0.1.0a0 + - libopenvino-tensorflow-lite-frontend >=2025.0.0,<2025.0.1.0a0 + - libopus >=1.3.1,<2.0a0 + - librsvg >=2.58.4,<3.0a0 + - libstdcxx >=13 + - libva >=2.22.0,<3.0a0 + - libvorbis >=1.3.7,<1.4.0a0 + - libvpx >=1.14.1,<1.15.0a0 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.6,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - openh264 >=2.6.0,<2.6.1.0a0 + - openssl >=3.4.1,<4.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - sdl2 >=2.32.50,<3.0a0 + - svt-av1 >=3.0.0,<3.0.1.0a0 + - x264 >=1!164.3095,<1!165 + - x265 >=3.5,<3.6.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + constrains: + - __cuda >=12.4 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 10401213 + timestamp: 1740543495852 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.17.0-pyhd8ed1ab_0.conda + sha256: 006d7e5a0c17a6973596dd86bfc80d74ce541144d2aee2d22d46fd41df560a63 + md5: 7f402b4a1007ee355bc50ce4d24d4a57 + depends: + - python >=3.9 + license: Unlicense + size: 17544 + timestamp: 1737517924333 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 + sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b + md5: 0c96522c6bdaed4b1566d11387caaf45 + license: BSD-3-Clause + license_family: BSD + size: 397370 + timestamp: 1566932522327 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 + sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c + md5: 34893075a5c9e55cdafac56607368fc6 + license: OFL-1.1 + license_family: Other + size: 96530 + timestamp: 1620479909603 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 + sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 + md5: 4d59c254e01d9cde7957100457e2d5fb + license: OFL-1.1 + license_family: Other + size: 700814 + timestamp: 1620479612257 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda + sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 + md5: 49023d73832ef61042f6a237cb2687e7 + license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 + license_family: Other + size: 1620504 + timestamp: 1727511233259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 265599 + timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 + sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 + md5: fee5683a3f04bd15cbd8318b096a27ab + depends: + - fonts-conda-forge + license: BSD-3-Clause + license_family: BSD + size: 3667 + timestamp: 1566974674465 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 + sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 + md5: f766549260d6815b0c52253f1fb1bb29 + depends: + - font-ttf-dejavu-sans-mono + - font-ttf-inconsolata + - font-ttf-source-code-pro + - font-ttf-ubuntu + license: BSD-3-Clause + license_family: BSD + size: 4102 + timestamp: 1566932280397 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda + sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 + md5: 9ae35c3d96db2c94ce0cef86efdfa2cb + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: GPL-2.0-only OR FTL + size: 634972 + timestamp: 1694615932610 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda + sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 + md5: e6085e516a3e304ce41a8ee08b9b89ad + depends: + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-only OR FTL + size: 596430 + timestamp: 1694616332835 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 + sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 + md5: ac7bc6a654f8f41b352b38f4051135f8 + depends: + - libgcc-ng >=7.5.0 + arch: x86_64 + platform: linux + license: LGPL-2.1 + size: 114383 + timestamp: 1604416621168 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb + md5: 201db6c2d9a3c5e46573ac4cb2e92f4f + depends: + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 528149 + timestamp: 1715782983957 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-0.23.1-h5888daf_0.conda + sha256: 9d93e75a63a8ca8f86d1be09f68f1211754e6f1e9ee4fa6d90b9d46ee0f1dabb + md5: 0754038c806eae440582da1c3af85577 + depends: + - __glibc >=2.17,<3.0.a0 + - gettext-tools 0.23.1 h5888daf_0 + - libasprintf 0.23.1 h8e693c7_0 + - libasprintf-devel 0.23.1 h8e693c7_0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + - libgettextpo-devel 0.23.1 h5888daf_0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 484344 + timestamp: 1739038829530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.23.1-h5888daf_0.conda + sha256: dd2b54a823ea994c2a7908fcce40e1e612ca00cb9944f2382624ff2d3aa8db03 + md5: 2f659535feef3cfb782f7053c8775a32 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 2967824 + timestamp: 1739038787800 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h7201bc8_3.conda + sha256: addd0bc226ca86c11f1223ab322d12b67501c2b3d93749bdab2068ccaedd8ef0 + md5: 673ef4d6611f5b4ca7b5c1f8c65a38dc + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 209631 + timestamp: 1733462668219 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmpy2-2.1.5-py312h524cf62_3.conda + sha256: 0ea196e4b706321951af1eebdb6a4eb9307faa1fd5361bcf49acb150e71774f7 + md5: ab7a5d10c7b4e249a9fe7bc280909803 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpc >=1.3.1,<2.0a0 + - mpfr >=4.2.1,<5.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 147983 + timestamp: 1733462785197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add + md5: f87c7b7c2cb45f323ffbce941c78ab7c + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 96855 + timestamp: 1711634169756 +- conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.2.0-pyhd8ed1ab_0.conda + sha256: 0aa1cdc67a9fe75ea95b5644b734a756200d6ec9d0dff66530aec3d1c1e9df75 + md5: b4754fb1bdcb70c8fd54f918301582c6 + depends: + - hpack >=4.1,<5 + - hyperframe >=6.1,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 53888 + timestamp: 1738578623567 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-10.3.0-h76408a6_0.conda + sha256: fbccddfbbfaf139102e5513a2a053010338809348ade18bbf16cb6b92a53d294 + md5: 0a06f278e5d9242057673b1358a75e8f + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - graphite2 + - icu >=75.1,<76.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1671633 + timestamp: 1740154398990 +- conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba + md5: 0a802cb9888dd14eeefc611f05c40b6e + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 30731 + timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda + sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 + md5: 8e6923fc12f1fe8f8c4e5c9f343256ac + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17397 + timestamp: 1737618427549 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda + sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e + md5: 8b189310083baabfb622af68fd9d3ae3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 12129203 + timestamp: 1720853576813 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.6.1-pyha770c72_0.conda + sha256: 598951ebdb23e25e4cec4bbff0ae369cec65ead80b50bc08b441d8e54de5cf03 + md5: f4b39bf00c69f56ac01e020ebfac066c + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 29141 + timestamp: 1737420302391 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.22-h7c63dc7_2.conda + sha256: 5e44a3a4b9791d1268636811628555ad40d4a8dd5c3be3334062df75580ae25b + md5: f56277b7f079f1b13cbf7fb9b4f194c4 + depends: + - alsa-lib >=1.2.10,<1.3.0.0a0 + - libdb >=6.2.32,<6.3.0a0 + - libgcc-ng >=12 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 464144 + timestamp: 1693879949990 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 + depends: + - __osx >=11.0 + - libcxx >=16 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 + sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab + md5: a8832b479f93521a9e7b5b743803be51 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.0-only + license_family: LGPL + size: 508258 + timestamp: 1664996250081 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.17-h717163a_0.conda + sha256: d6a61830a354da022eae93fa896d0991385a875c6bba53c82263a289deda9db8 + md5: 000e85703f0fd9594c81710dd5066471 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 248046 + timestamp: 1739160907615 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.17-h7eeda09_0.conda + sha256: 310a62c2f074ebd5aa43b3cd4b00d46385ce680fa2132ecee255a200e2d2f15f + md5: 92a61fd30b19ebd5c1621a5bfe6d8b5f + depends: + - __osx >=11.0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 212125 + timestamp: 1739161108467 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_4.conda + sha256: db73f38155d901a610b2320525b9dd3b31e4949215c870685fd92ea61b5ce472 + md5: 01f8d123c96816249efd255a31ad7712 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 671240 + timestamp: 1740155456116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 + sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 + md5: 76bbff344f0134279f225174e9064c8f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 281798 + timestamp: 1657977462600 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 + md5: de462d5aacda3b30721b512c5da4e742 + depends: + - libcxx >=13.0.1 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 215721 + timestamp: 1657977558796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/level-zero-1.20.6-h84d6215_0.conda + sha256: d91b1fcdead51bae9d4972f8105217dd29ef12dd89e5570046c752f267e0e9af + md5: 15a7a302f9a67ac83897dc3d8b5e4097 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 553269 + timestamp: 1739970787243 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_4.conda + sha256: 05fa5e5e908962b9c5aba95f962e2ca81d9599c4715aebe5e4ddb72b309d1770 + md5: c2d95bd7aa8d564a9bd7eca5e571a5b3 + depends: + - __osx >=11.0 + - libcxx >=18 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 1178260 + timestamp: 1736008642885 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-0.23.1-h8e693c7_0.conda + sha256: 13b863584fccbb9089de73a2442e540703ce4873e4719c9d98c98e4a8e12f9d1 + md5: 988f4937281a66ca19d1adb3b5e3f859 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 43179 + timestamp: 1739038705987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.23.1-h8e693c7_0.conda + sha256: b05a859fe5a2b43574f3a5d93552061232b92d17017b27ecab1eccca1dbb2fe4 + md5: 2827e722a963b779ce878ef9b5474534 + depends: + - __glibc >=2.17,<3.0.a0 + - libasprintf 0.23.1 h8e693c7_0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 34282 + timestamp: 1739038733352 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-hba53ac1_1.conda + sha256: aaf38bcb9b78963f4eb58d882a9a6a350f500cfa162bd8a80f7f215d3831afa2 + md5: f5e75fe79d446bf4975b41d375314605 + depends: + - libgcc >=13 + - __glibc >=2.17,<3.0.a0 + - harfbuzz >=10.1.0,<11.0a0 + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - libiconv >=1.17,<2.0a0 + arch: x86_64 + platform: linux + license: ISC + size: 153294 + timestamp: 1733786555242 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 24e656f13b402b6fceb88df386768445ab9beb657d451a8e5a88d4b3380cf7a4 + md5: 85f61af03fd291dae33150ffe89dc09a + depends: + - mkl >=2022.1.0,<2023.0a0 + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 13102 + timestamp: 1660094562739 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 51e78e3c9fa57f3fec12936b760928715ba0ab5253d02815202f9ec4c2c9255d + md5: f50b1fd98593278e18319653cff9c475 + depends: + - libopenblas >=0.3.24,<0.3.25.0a0 + - libopenblas >=0.3.24,<1.0a0 + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14817 + timestamp: 1697484577887 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcap-2.71-h39aace5_0.conda + sha256: 2bbefac94f4ab8ff7c64dc843238b6c8edcc9ff1f2b5a0a48407a904dc7ccfb2 + md5: dd19e4e3043f6948bd7454b946ee0983 + depends: + - __glibc >=2.17,<3.0.a0 + - attr >=2.5.1,<2.6.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 102268 + timestamp: 1729940917945 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 892ba10508f22310ccfe748df1fd3b6c7f20e7b6f6b79e69ed337863551c1bd8 + md5: 361bf757b95488de76c4f123805742d3 + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - liblapack 3.9.0 16_linux64_mkl + - liblapacke 3.9.0 16_linux64_mkl + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094570921 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: 19b1c5e3ddd383ec14540336f4704938218d3c1db4707ae10d5357afb22cccc1 + md5: 5460a8d1beffd7f63994d891e6a20da4 + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - liblapack 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14738 + timestamp: 1697484590682 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.5.8-he02047a_2.conda + sha256: 168e664423e875f7107697dfa7935399675872ea8abffa92621db98007258d66 + md5: d446adae085aa1ff37c44b69988a6f06 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-nvrtc + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 240665617 + timestamp: 1715711552741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufft-11.2.1.3-he02047a_2.conda + sha256: 242e1ed210a85fc0dc2a4e86bf0b75120f1768ab66497502c5e6d69e801bf9dc + md5: d2641a67c207946ef96f1328c4a8e8ed + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 174980358 + timestamp: 1715711515585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcufile-1.9.1.3-he02047a_2.conda + sha256: 7fa7a608d52064b724241e4026f0e0cc244c6f725623e2c26c810be99822fa28 + md5: a051267bcb1912467c81d802a7d3465e + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 924329 + timestamp: 1715720836466 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurand-10.3.5.147-he02047a_2.conda + sha256: 7db821fc8f566dbb8d4e40dae62edb07d638db8c028d677a0063ece66872d19c + md5: 9c4886d513fd477df88d411cd274c202 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 41590169 + timestamp: 1715711553620 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.1.9-he02047a_2.conda + sha256: df4f8a94bffb59dc3da28fb5a892c1ef2553f8afd49f141d3e2da8c92f276a56 + md5: 9f6877f8936be962f598db5e9b8efc51 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libcublas >=12.4.5.8,<12.5.0a0 + - libcusparse >=12.3.1.170,<12.4.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 81594879 + timestamp: 1715711788074 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.1.170-he02047a_2.conda + sha256: f2254e41c93a8c3529690c19350556708182ef699ca658c6554eeb7eb4b8c3de + md5: 1c4c7ff54dc5b947f2ab8f5ff8a28dae + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libnvjitlink >=12.4.127,<12.5.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 117818451 + timestamp: 1715711610677 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.7-ha82da77_0.conda + sha256: 776092346da87a2a23502e14d91eb0c32699c4a1522b7331537bd1c3751dcff5 + md5: 5b3e1610ff8bd5443476b91d618f5b77 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 523505 + timestamp: 1736877862502 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2 + sha256: 21fac1012ff05b131d4b5d284003dbbe7b5c4c652aa9e401b46279ed5a784372 + md5: 3f3258d8f841fbac63b36b75bdac1afd + depends: + - libgcc-ng >=9.3.0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: AGPL-3.0-only + license_family: AGPL + size: 24409456 + timestamp: 1609539093147 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + sha256: f0d5ffbdf3903a7840184d14c14154b503e1a96767c328f61d99ad24b6963e52 + md5: 8bc89311041d7fcb510238cf0848ccae + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 242533 + timestamp: 1733424409299 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 134676 + timestamp: 1738479519902 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda + sha256: 7fd5408d359d05a969133e47af580183fbf38e2235b562193d427bb9dad79723 + md5: c151d5eb730e9b7480e6d48c0fc44048 + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 44840 + timestamp: 1731330973553 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_0.conda + sha256: 67a6c95e33ebc763c1adc3455b9a9ecde901850eb2fceb8e646cc05ef3a663da + md5: e3eb7806380bc8bcecba6d749ad5f026 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 53415 + timestamp: 1739260413716 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda + sha256: 65908b75fa7003167b8a8f0001e11e58ed5b1ef5e98b96ab2ba66d7c1b822c7d + md5: ee48bf17cc83a00f59ca1494d5646869 + depends: + - gettext >=0.21.1,<1.0a0 + - libgcc-ng >=12 + - libogg 1.3.* + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 394383 + timestamp: 1687765514062 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h767d61c_2.conda + sha256: 3a572d031cb86deb541d15c1875aaa097baefc0c580b54dc61f5edab99215792 + md5: ef504d1acbd74b7cc6849ef8af47dd03 + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h767d61c_2 + - libgcc-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 847885 + timestamp: 1740240653082 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_2.conda + sha256: fb7558c328b38b2f9d2e412c48da7890e7721ba018d733ebdfea57280df01904 + md5: a2222a6ada71fb478682efe483ce0f92 + depends: + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53758 + timestamp: 1740240660904 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcrypt-lib-1.11.0-hb9d3cd8_2.conda + sha256: ffc3602f9298da248786f46b00d0594d26a18feeb1b07ce88f3d7d61075e39e6 + md5: e55712ff40a054134d51b89afca57dbc + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgpg-error >=1.51,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 586185 + timestamp: 1732523190369 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.23.1-h5888daf_0.conda + sha256: 190097140d9c16637aa516757d8087f17e8c22cc844c87288da64404b81ef43c + md5: a09ce5decdef385bcce78c32809fa794 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 166867 + timestamp: 1739038720211 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-devel-0.23.1-h5888daf_0.conda + sha256: 90f29ec7a7e2d758cb61459e643dcb54933dcf92194be6c29b0a1591fcbb163e + md5: 7a5d5c245a6807deab87558e9efd3ef0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libgettextpo 0.23.1 h5888daf_0 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 36818 + timestamp: 1739038746565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_2.conda + sha256: e05263e8960da03c341650f2a3ffa4ccae4e111cb198e8933a2908125459e5a6 + md5: fb54c4ea68b460c278d26eea89cfbcc3 + depends: + - libgfortran5 14.2.0 hf1ad2bd_2 + constrains: + - libgfortran-ng ==14.2.0=*_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53733 + timestamp: 1740240690977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_2.conda + sha256: 688a5968852e677d2a64974c8869ffb120eac21997ced7d15c599f152ef6857e + md5: 4056c857af1a99ee50589a941059ec55 + depends: + - libgfortran 14.2.0 h69a702a_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53781 + timestamp: 1740240884760 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hf1ad2bd_2.conda + sha256: c17b7cf3073a1f4e1f34d50872934fa326346e104d3c445abc1e62481ad6085c + md5: 556a4fdfac7287d349b8f09aba899693 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1461978 + timestamp: 1740240671964 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda + sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a + md5: 66ac81d54e95c534ae488726c1f698ea + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 997381 + timestamp: 1707330687590 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda + sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d + md5: 928b8be80851f5d8ffb016f9c81dae7a + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - libglx 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 134712 + timestamp: 1731330998354 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_1.conda + sha256: f0804a9e46ae7b32ca698d26c1c95aa82a91f71b6051883d4a46bea725be9ea4 + md5: 37d1af619d999ee8f1f73cf5a06f4e2f + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_1 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 3923974 + timestamp: 1737037491054 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda + sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 + md5: 434ca7e50e40f4918ab701e3facd59a0 + depends: + - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 132463 + timestamp: 1731330968309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda + sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 + md5: c8013e438185f33b13814c5c488acd5c + depends: + - __glibc >=2.17,<3.0.a0 + - libglvnd 1.7.0 ha4b6fd6_2 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: LicenseRef-libglvnd + size: 75504 + timestamp: 1731330988898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.51-hbd13f7d_1.conda + sha256: 9e0c09c1faf2151ade3ccb64e52d3c1f2dde85c00e37c6a3e6a8bced2aba68be + md5: 168cc19c031482f83b23c4eebbb94e26 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 268740 + timestamp: 1731920927644 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda + sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 + md5: 804ca9e91bcaea0824a341d55b1684f2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2423200 + timestamp: 1731374922090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h4ce23a2_1.conda + sha256: 18a4afe14f731bfb9cf388659994263904d20111e42f841e9eea1bb6f91f4ab4 + md5: e796ff8ddc598affdf7c173d6145f087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + size: 713084 + timestamp: 1740128065462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 + depends: + - libgcc-ng >=12 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: linux + license: IJG AND BSD-3-Clause AND Zlib + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda + sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 + md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 + constrains: + - jpeg <0.0.0a + arch: arm64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 547541 + timestamp: 1694475104253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: d6201f860b2d76ed59027e69c2bbad6d1cb211a215ec9705cc487cde488fa1fa + md5: a2f166748917d6d6e4707841ca1f519e + depends: + - libblas 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - liblapacke 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12791 + timestamp: 1660094578903 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-19_osxarm64_openblas.conda + build_number: 19 + sha256: f19cff537403c9feed98c7e18259022102b087f2b72a757e8a417476b9cf30c1 + md5: 3638eacb084c374f41f9efa40d20a47b + depends: + - libblas 3.9.0 19_osxarm64_openblas + constrains: + - libcblas 3.9.0 19_osxarm64_openblas + - blas * openblas + - liblapacke 3.9.0 19_osxarm64_openblas + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 14721 + timestamp: 1697484603691 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2 + build_number: 16 + sha256: 935036dc46c483cba8288c6de58d461ab3f42915715ffe9485105ad1dd203a0e + md5: 44ccc4d4dca6a8d57fa17442bc64b5a1 + depends: + - libblas 3.9.0 16_linux64_mkl + - libcblas 3.9.0 16_linux64_mkl + - liblapack 3.9.0 16_linux64_mkl + constrains: + - blas * mkl + - mkl <2025 + arch: x86_64 + platform: linux + track_features: + - blas_mkl + license: BSD-3-Clause + license_family: BSD + size: 12793 + timestamp: 1660094586875 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.4-hb9d3cd8_0.conda + sha256: cad52e10319ca4585bc37f0bc7cce99ec7c15dc9168e42ccb96b741b0a27db3f + md5: 42d5b6a0f30d3c10cd88cb8584fda1cb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: 0BSD + size: 111357 + timestamp: 1738525339684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.4-h39f12f2_0.conda + sha256: 560c59d3834cc652a84fb45531bd335ad06e271b34ebc216e380a89798fe8e2c + md5: e3fd1f8320a100f2b210e690a57cd615 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 98945 + timestamp: 1738525462560 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnpp-12.2.5.30-he02047a_2.conda + sha256: d8c97716825955c48681f4a3cde2f0cbbacc77c91b4cd944d4906f63385487df + md5: a96a1edd18bee676cf2dcca251d3d6a4 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 99461229 + timestamp: 1715711634268 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvfatbin-12.4.127-he02047a_2.conda + sha256: d40f37532f86cbbe63439489be0e88561819190392cc519c69365b3fc47a2c5b + md5: d746b76642b4ac6e40f1219405672beb + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 792025 + timestamp: 1715711761341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjitlink-12.4.127-he02047a_2.conda + sha256: 31382c8ef388a51bd2c283a239e037b8b30f9c7ecf6ec9744824445b59db39b6 + md5: 303845d6c48bf4185dc4138634650468 + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 16571958 + timestamp: 1715711715842 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnvjpeg-12.3.1.117-he02047a_2.conda + sha256: 49a182f8da4ba30fbfee9692976d9da349371175c9c9576768d4754a51fef326 + md5: 8f3ed0e41a4b505de40b4f96f4bfb0fa + depends: + - __glibc >=2.17,<3.0.a0 + - cuda-version >=12.4,<12.5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: LicenseRef-NVIDIA-End-User-License-Agreement + size: 2491500 + timestamp: 1715711780068 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d + md5: 601bfb4b3c6f0b844443bb81a56651e0 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 205914 + timestamp: 1719301575771 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.24-openmp_hd76b1f2_0.conda + sha256: 21edfdf620ac5c93571aab452199b6b4622c445441dad88ab4d2eb326a7b91b3 + md5: aacb05989f358affe1bafd4ea7294db4 + depends: + - libgfortran 5.* + - libgfortran5 >=12.3.0 + - llvm-openmp >=15.0.7 + constrains: + - openblas >=0.3.24,<0.3.25.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2849225 + timestamp: 1693784744674 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2025.0.0-hdc3f47d_1.conda + sha256: 49c22b9122d4486f0443df60aeb0abb5b9ea599e985d832a4df85d30626c49a4 + md5: ff14d34bee58e2b5f75606334974d87b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 5639813 + timestamp: 1738909524141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2025.0.0-h4d9b6c2_1.conda + sha256: f2b01232826000e0d92130f86458ce89c91bd809a408d4db31193d35e243f4be + md5: fc72b0f92faeb3fa78c10e78d9bf4838 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 112220 + timestamp: 1738909545158 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2025.0.0-h4d9b6c2_1.conda + sha256: 8b431c4ddbce91bb1cb90af276177eaa43bf63153ffe34eb77c7049013752447 + md5: 738958195251706a5a0a6de99031ec22 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 238442 + timestamp: 1738909557573 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2025.0.0-h981d57b_1.conda + sha256: f0131b50df323c81f6310ce822e708b2498b967b74824da2f900892ef0ae3f67 + md5: 41ea2673be5ab0289ef4b577f8a85ad9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + arch: x86_64 + platform: linux + size: 195779 + timestamp: 1738909570181 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2025.0.0-hdc3f47d_1.conda + sha256: bb84bcbf3e7db8e872fdbfb1016a1cf221b3f51ebaaa2605baeba70aca893255 + md5: 1fdc53d6075e6849ad692eb8100ace05 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 12364806 + timestamp: 1738909583182 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2025.0.0-hdc3f47d_1.conda + sha256: e3c1a36a413dfefff62210e2a65f0a50aa9ed29451f604b5ec984321e7974858 + md5: e0a14de49ba878949901305fb671022c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - ocl-icd >=2.3.2,<3.0a0 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 10030542 + timestamp: 1738909622462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2025.0.0-hdc3f47d_1.conda + sha256: 62286505dd251573024c94dd7300e2d10452019c8e70962adfe55530995cd3c4 + md5: 33d33d9b6494ab96a0b026c549f78bee + depends: + - __glibc >=2.17,<3.0.a0 + - level-zero >=1.20.3,<2.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 1087865 + timestamp: 1738909654683 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2025.0.0-h981d57b_1.conda + sha256: a05b798429eb6496f7317913ce793ebdc117ccce2fdf3c6e556d2a275ad862e7 + md5: b00858b2c5328dc5353be09742ea54d8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + - pugixml >=1.15,<1.16.0a0 + arch: x86_64 + platform: linux + size: 206167 + timestamp: 1738909668116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2025.0.0-h6363af5_1.conda + sha256: 89efe46f944bd58002d95784f70cb0b37a3d078dafc6eaee6b1597b2662af920 + md5: 6eb4c9e84623c749f8f1c210d1de11ae + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 1652945 + timestamp: 1738909681015 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2025.0.0-h6363af5_1.conda + sha256: 1358bac09d08abe76f7f9915c3ef7b524e669b49d208b2f563b02eef07ce195e + md5: 444a64a0bbf0b83a595f3dc18dee9417 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 678731 + timestamp: 1738909695599 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2025.0.0-h5888daf_1.conda + sha256: b26726a52836441f18f40d6eeb16f7a697a40c53fbfbc3fd59b873b54e3b1c64 + md5: cfd1ea36718a47d10d2dbad9c2792f75 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 1100691 + timestamp: 1738909709817 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2025.0.0-h630ec5c_1.conda + sha256: 5cf431ab5e4eb3412757faad4698032c8427ea6ae80fdb22cf050f11890cb907 + md5: c3f2c6e29fdf509e57acd7ecd4dc95db + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - snappy >=1.2.1,<1.3.0a0 + arch: x86_64 + platform: linux + size: 1294838 + timestamp: 1738909723984 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2025.0.0-h5888daf_1.conda + sha256: 355a0d5a14b6451a103531adba066ada50be21bd0d7ba53761fe578f25cab5dd + md5: af2ac1ba29a7c00a0e5fbb03f7a13ae5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2025.0.0 hdc3f47d_1 + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 481998 + timestamp: 1738909737796 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f + md5: 15345e56d527b330e1cacbdf58676e8f + depends: + - libgcc-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 260658 + timestamp: 1606823578035 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + sha256: c0a30ac74eba66ea76a4f0a39acc7833f5ed783a632ca3bb6665b2d81aabd2fb + md5: 48f4330bfcd959c3cfb704d424903c82 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 28361 + timestamp: 1707101388552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.47-h943b412_0.conda + sha256: 23367d71da58c9a61c8cbd963fcffb92768d4ae5ffbef9a47cdf1f54f98c5c36 + md5: 55199e2ae2c3651f6f9b2a447b47bdc9 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 288701 + timestamp: 1739952993639 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.47-h3783ad8_0.conda + sha256: dc93cc30f59b28e7812c6f14d2c2e590b509c38092cce7ababe6b23541b7ed8f + md5: 3550e05e3af94a3fa9cef2694417ccdf + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: zlib-acknowledgement + size: 259332 + timestamp: 1739953032676 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.3-h3bd63a1_1.conda + sha256: f58a16b13ad53346903c833e266f83c3d770a43a432659b98710aed85ca885e7 + md5: bdbfea4cf45ae36652c6bbcc2e7ebe91 + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2271580 + timestamp: 1735576361997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-h49af25d_2.conda + sha256: 475013475a3209c24a82f9e80c545d56ccca2fa04df85952852f3d73caa38ff9 + md5: b9846db0abffb09847e2cb0fec4b4db6 + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - freetype >=2.12.1,<3.0a0 + - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=10.1.0,<11.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libxml2 >=2.13.5,<3.0a0 + - pango >=1.54.0,<2.0a0 + constrains: + - __glibc >=2.17 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 6342757 + timestamp: 1734902068235 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsentencepiece-0.2.0-h8e10757_10.conda + sha256: dc399e0f04a09f8c1807c3b36e578eb81f81891c0ddf21de9c1fb9f048ce4031 + md5: 4f43dbcfacd3cc9a183dd3a48b94d3c0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 823649 + timestamp: 1735627841126 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsentencepiece-0.2.0-he13a0af_10.conda + sha256: 3347a8840d085ce1661928e736229f068d56c84312fbed90886e059023d85611 + md5: 1f67e5e30edd56e0a0bf6df6bb711a9d + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 754657 + timestamp: 1735628030895 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.2.2-hc60ed4a_1.conda + sha256: f709cbede3d4f3aee4e2f8d60bd9e256057f410bd60b8964cb8cf82ec1457573 + md5: ef1910918dd895516a769ed36b5b3a4e + depends: + - lame >=3.100,<3.101.0a0 + - libflac >=1.4.3,<1.5.0a0 + - libgcc-ng >=12 + - libogg >=1.3.4,<1.4.0a0 + - libopus >=1.3.1,<2.0a0 + - libstdcxx-ng >=12 + - libvorbis >=1.3.7,<1.4.0a0 + - mpg123 >=1.32.1,<1.33.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 354372 + timestamp: 1695747735668 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: ISC + size: 205978 + timestamp: 1716828628198 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 + md5: a7ce36e284c5faaf93c220dfc39e3abd + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.49.1-hee588c1_1.conda + sha256: 7a09eef804ef7cf4d88215c2297eabb72af8ad0bd5b012060111c289f14bbe7d + md5: 73cea06049cc4174578b432320a003b8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: Unlicense + size: 915956 + timestamp: 1739953155793 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.49.1-h3f77e49_1.conda + sha256: 266639fb10ca92287961574b0b4d6031fa40dd9d723d64a0fcb08513a24dab03 + md5: c83357a21092bd952933c36c5cb4f4d6 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 898767 + timestamp: 1739953312379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-h8f9b012_2.conda + sha256: 8f5bd92e4a24e1d35ba015c5252e8f818898478cb3bc50bd8b12ab54707dc4da + md5: a78c856b6dc6bf4ea8daeb9beaaa3fb0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 14.2.0 h767d61c_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3884556 + timestamp: 1740240685253 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_2.conda + sha256: e86f38b007cf97cc2c67cd519f2de12a313c4ee3f5ef11652ad08932a5e34189 + md5: c75da67f045c2627f59e6fcb5f4e3a9b + depends: + - libstdcxx 14.2.0 h8f9b012_2 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53830 + timestamp: 1740240722530 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-257.3-h3dc2cb9_0.conda + sha256: dd566e2ef4a83b27d2b26d988cbbed50456294892744639f30f19954d2ee3287 + md5: df057752e83bd254f6d65646eb67cd2e + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + - libgcrypt-lib >=1.11.0,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 487271 + timestamp: 1739569869860 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de + depends: + - __glibc >=2.17,<3.0.a0 + - lerc >=4.0.0,<5.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 + depends: + - __osx >=11.0 + - lerc >=4.0.0,<5.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: HPND + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libudev1-257.3-h9a4d06a_0.conda + sha256: 35bdafc4b02f61a327f82bb11263c31466367e50b4e5efab3d413509315cb0a7 + md5: e7817c912b25f7599a50eba270e1a463 + depends: + - __glibc >=2.17,<3.0.a0 + - libcap >=2.71,<2.72.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 142897 + timestamp: 1739569881116 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libunwind-1.6.2-h9c3ff4c_0.tar.bz2 + sha256: f2ac872920833960e514ce9efd8f7c08ce66dd870738d73839d1bce1ac497de6 + md5: a730b2badd586580c5752cc73842e068 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 75491 + timestamp: 1638450786937 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liburing-2.9-h84d6215_0.conda + sha256: bfa34a5a929d792dfcfbbe2d9ee21bd870d73d646512e21c871dab0b80194468 + md5: ecd409e7bfcf4ee73f74d7a2cc91a4c3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 121336 + timestamp: 1738604403935 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libusb-1.0.27-h520f47e_100.conda + sha256: c641cdf5c398441df9863291c20574c37b1e4a6113b18a41c6a43ccc1df1b92c + md5: 82e46dc001ab1ef291554ead981b0cde + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libudev1 >=255 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 86196 + timestamp: 1706828413450 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.22.0-h8a09558_1.conda + sha256: 0bd81019e02cce8d9d4077c96b82ca03c9b0ece67831c7437f977ca1f5a924a3 + md5: 139262125a3eac8ff6eef898598745a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libdrm >=2.4.123,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libglx >=1.7.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 + - wayland >=1.23.1,<2.0a0 + - wayland-protocols + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxfixes + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 217708 + timestamp: 1726828458441 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.14.1-hac33072_0.conda + sha256: e7d2daf409c807be48310fcc8924e481b62988143f582eb3a58c5523a6763b13 + md5: cde393f461e0c169d9ffb2fc70f81c33 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 1022466 + timestamp: 1717859935011 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 + depends: + - __osx >=11.0 + constrains: + - libwebp 1.5.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 + md5: af523aae2eca6dfa1c8eec693f5b9a79 + depends: + - __osx >=11.0 + - pthread-stubs + - xorg-libxau >=1.0.11,<2.0a0 + - xorg-libxdmcp + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 323658 + timestamp: 1727278733917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.8.0-hc4a0caf_0.conda + sha256: 583203155abcfb03938d8473afbf129156b5b30301a0f796c8ecca8c5b7b2ed2 + md5: f1656760dbf05f47f962bfdc59fc3416 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - xkeyboard-config + - xorg-libxau >=1.0.12,<2.0a0 + arch: x86_64 + platform: linux + license: MIT/X11 Derivative + license_family: MIT + size: 642349 + timestamp: 1738735301999 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.6-h8d12d68_0.conda + sha256: db8af71ea9c0ae95b7cb4a0f59319522ed2243942437a1200ceb391493018d85 + md5: 328382c0e0ca648e5c189d5ec336c604 + depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.6.4,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 690296 + timestamp: 1739952967309 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-15.0.7-h0cdce71_0.conda + sha256: 7c67d383a8b1f3e7bf9e046e785325c481f6868194edcfb9d78d261da4ad65d4 + md5: 589c9a3575a050b583241c3d688ad9aa + depends: + - libzlib >=1.2.13,<2.0.0a0 + constrains: + - openmp 15.0.7|15.0.7.* + arch: x86_64 + platform: linux + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 3268766 + timestamp: 1673584331056 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-15.0.7-h7cfbb63_0.conda + sha256: 6cc4cf021fc1f06df3b97598bf9583fe7a04fad6a4eef9882558f7932f362bc0 + md5: 358164e15a9320f11b84a53fb8d8e446 + constrains: + - openmp 15.0.7|15.0.7.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 263326 + timestamp: 1673584823527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312h998013c_1.conda + sha256: 4aa997b244014d3707eeef54ab0ee497d12c0d0d184018960cce096169758283 + md5: 46e547061080fddf9cf95a0327e8aba6 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 24048 + timestamp: 1733219945697 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 6fe952db050b07af9045ee094df2241255d72ee0bca5663edfd2ce1c9752ec09 + md5: 8e5bdfbc3312e58ca7af7e74b4c1a62a + depends: + - max-core ==25.2.0.dev2025022805 release + - max-python ==25.2.0.dev2025022805 release + - mojo-jupyter ==25.2.0.dev2025022805 release + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 9906 + timestamp: 1740719805201 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.2.0.dev2025022805-release.conda + sha256: a507f8b798257c4505a296fd1d7900bcc9695b5eaa5990d5a447f588e203ffb7 + md5: 53a62d22b682cdf446cfcbb5e07a0b4d + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 249837097 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.2.0.dev2025022805-release.conda + sha256: eb316eef88826b46d84532c0cfcde6d56a875aafcfe08d140cd6b90d752f8841 + md5: efed274ef0a65e98815933cfb8b609d2 + depends: + - mblack ==25.2.0.dev2025022805 release + license: LicenseRef-Modular-Proprietary + size: 217300178 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 1724ba61123d73c5ae9194dddcaf61e7937123cbd49d0fb122fc78cee0673e6d + md5: 35a33686fe8cccc768034d43f604e672 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 123624528 + timestamp: 1740719822740 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.2.0.dev2025022805-release.conda + noarch: python + sha256: c56d9f6edeb5caa166d74eefca5d472556e29b4a22a4a7e799ff9f9482af0a62 + md5: c684a1ac57d5ca9a82884bffff428154 + depends: + - max-core ==25.2.0.dev2025022805 release + - click >=8.0.0 + - numpy >=1.18,<2.0 + - sentencepiece >=0.2.0 + - tqdm >=4.67.1 + constrains: + - aiohttp >=3.11.12 + - fastapi >=0.114.2 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - httpx >=0.28.1 + - huggingface_hub >=0.24.0 + - nvitop >=1.4.1 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0 + - opentelemetry-exporter-prometheus >=0.48b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - pillow >=10.3.0 + - prometheus_client >=0.21.0 + - prometheus-async >=22.2.0 + - psutil >=6.1.1 + - pydantic + - pydantic-settings >=2.7.1 + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - requests >=2.32.3 + - rich >=13.9.4 + - safetensors >=0.5.2 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - tokenizers >=0.19.0 + - pytorch >=2.2.2,<=2.5.1 + - transformers >=4.40.1 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar ==0.1.11 + license: LicenseRef-Modular-Proprietary + size: 112656033 + timestamp: 1740721042829 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.2.0.dev2025022805-release.conda + noarch: python + sha256: 8d5cc0e599b2ceecc816efe63442c4295304ae7b3016b42399097de4dbcf1769 + md5: 49a934446d5d99e86689f4373ecfe4c4 + depends: + - python >=3.9,<3.13 + - click >=8.0.0 + - mypy_extensions >=0.4.3 + - packaging >=22.0 + - pathspec >=0.9.0 + - platformdirs >=2 + - typing_extensions >=v4.12.2 + - python + license: MIT + size: 130852 + timestamp: 1740719805200 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 767318c4f2057822a7ebc238d6065ce12c6ae60df4ab892758adb79b1057ce02 + md5: b9c8f925797a93dbff45e1626b025a6b + depends: + - _openmp_mutex * *_llvm + - _openmp_mutex >=4.5 + - llvm-openmp >=14.0.3 + - tbb 2021.* + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 209326825 + timestamp: 1652946040193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2 + sha256: 93d957608b17ada3039ff0acad2b8596451caa6829b3502fe87375e639ffc34e + md5: 69ba49e445f87aea2cba343a71a35ca2 + depends: + - mkl 2022.1.0 h84fe81f_915 + - mkl-include 2022.1.0 h84fe81f_915 + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 25614 + timestamp: 1652946458276 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2 + sha256: 63415fe64e99f8323d0191d45ea5b1ec3973317e728b9071267ffb7ff3b38364 + md5: 2dcd1acca05c11410d4494d7fc7dfa2a + arch: x86_64 + platform: linux + license: LicenseRef-ProprietaryIntel + license_family: Proprietary + size: 762563 + timestamp: 1652946186347 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.2.0.dev2025022805-release.conda + noarch: python + sha256: d0b2f5c55bb0baea04e0a76469a0106ef60ba50e13f305b653fefb4903b9da60 + md5: 5f877a177817719dfa2b616176dbc409 + depends: + - max-core ==25.2.0.dev2025022805 release + - python >=3.9,<3.13 + - jupyter_client >=8.6.2,<8.7 + - python + license: LicenseRef-Modular-Proprietary + size: 22994 + timestamp: 1740719805201 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-h24ddda3_1.conda + sha256: 1bf794ddf2c8b3a3e14ae182577c624fa92dea975537accff4bc7e5fea085212 + md5: aa14b9a5196a6d8dd364164b7ce56acf + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: linux + license: LGPL-3.0-or-later + license_family: LGPL + size: 116777 + timestamp: 1725629179524 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h90cbb55_3.conda + sha256: f25d2474dd557ca66c6231c8f5ace5af312efde1ba8290a6ea5e1732a4e669c0 + md5: 2eeb50cab6652538eee8fc0bc3340c81 + depends: + - __glibc >=2.17,<3.0.a0 + - gmp >=6.3.0,<7.0a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: LGPL-3.0-only + license_family: LGPL + size: 634751 + timestamp: 1725746740014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda + sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 + md5: 4e4ea852d54cc2b869842de5044662fb + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 345517 + timestamp: 1725746730583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mpg123-1.32.9-hc50e24c_0.conda + sha256: 39c4700fb3fbe403a77d8cc27352fa72ba744db487559d5d44bf8411bb4ea200 + md5: c7f302fd11eeb0987a6a5e1f3aed6a21 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: LGPL-2.1-only + license_family: LGPL + size: 491140 + timestamp: 1730581373280 +- conda: https://conda.anaconda.org/conda-forge/noarch/mpmath-1.3.0-pyhd8ed1ab_1.conda + sha256: 7d7aa3fcd6f42b76bd711182f3776a02bef09a68c5f117d66b712a6d81368692 + md5: 3585aa87c43ab15b167b574cd73b057b + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 439705 + timestamp: 1733302781386 +- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.0.0-pyha770c72_1.conda + sha256: 1895f47b7d68581a6facde5cb13ab8c2764c2e53a76bd746f8f98910dc4e08fe + md5: 29097e7ea634a45cc5386b95cac6568f + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10854 + timestamp: 1733230986902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda + sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586 + md5: 47e340acb35de30501a76c7c799c41d7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: X11 AND BSD-3-Clause + size: 891641 + timestamp: 1738195959188 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + sha256: 2827ada40e8d9ca69a153a45f7fd14f32b2ead7045d3bbb5d10964898fe65733 + md5: 068d497125e4bf8a66bf707254fff5ae + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.4.2-pyh267e887_2.conda + sha256: 39625cd0c9747fa5c46a9a90683b8997d8b9649881b3dc88336b13b7bdd60117 + md5: fd40bf7f7f4bc4b647dc8512053d9873 + depends: + - python >=3.10 + - python + constrains: + - numpy >=1.24 + - scipy >=1.10,!=1.11.0,!=1.11.1 + - matplotlib >=3.7 + - pandas >=2.0 + license: BSD-3-Clause + license_family: BSD + size: 1265008 + timestamp: 1731521053408 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda + sha256: fe3459c75cf84dcef6ef14efcc4adb0ade66038ddd27cadb894f34f4797687d8 + md5: d8285bea2a350f63fab23bf460221f3f + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc-ng >=12 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx-ng >=12 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 7484186 + timestamp: 1707225809722 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda + sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 + md5: d83fc83d589e2625a3451c9a7e21047c + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=16 + - liblapack >=3.9.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6073136 + timestamp: 1707226249608 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda + sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 + md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 94934 + timestamp: 1732915114536 +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda + sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 + md5: 3ba02cce423fdac1a8582bd6bb189359 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 54060 + timestamp: 1732912937444 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.6.0-hc22cd8d_0.conda + sha256: 3f231f2747a37a58471c82a9a8a80d92b7fece9f3fce10901a5ac888ce00b747 + md5: b28cf020fd2dead0ca6d113608683842 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 731471 + timestamp: 1739400677213 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 + depends: + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.1-h7b32b05_0.conda + sha256: cbf62df3c79a5c2d113247ddea5658e9ff3697b6e741c210656e239ecaf1768f + md5: 41adf927e746dc75ecf0ef841c454e48 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2939306 + timestamp: 1739301879343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.1-h81ee809_0.conda + sha256: 4f8e2389e1b711b44182a075516d02c80fa7a3a7e25a71ff1b5ace9eae57a17a + md5: 75f9f0c7b1740017e2db83a53ab9a28e + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2934522 + timestamp: 1739301896733 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.1-h861ebed_0.conda + sha256: 20e5e280859a7803e8b5a09f18a7e43b56d1b8e61e4888c1a24cbb0d5b9cabd3 + md5: 59e660508a4de9401543303d5f576aeb + depends: + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 + - fribidi >=1.0.10,<2.0a0 + - harfbuzz >=10.2.0,<11.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.45,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + size: 451406 + timestamp: 1737510786003 +- conda: https://conda.anaconda.org/conda-forge/noarch/pathspec-0.12.1-pyhd8ed1ab_1.conda + sha256: 9f64009cdf5b8e529995f18e03665b03f5d07c0b17445b8badef45bde76249ee + md5: 617f15191456cc6a13db418a275435e5 + depends: + - python >=3.9 + license: MPL-2.0 + license_family: MOZILLA + size: 41075 + timestamp: 1733233471940 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.1.0-py312h80c1187_0.conda + sha256: 5c347962202b55ae4d8a463e0555c5c6ca33396266a08284bf1384399894e541 + md5: d3894405f05b2c0f351d5de3ae26fa9c + depends: + - __glibc >=2.17,<3.0.a0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libgcc >=13 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux + license: HPND + size: 42749785 + timestamp: 1735929845390 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.1.0-py312h50aef2c_0.conda + sha256: b29b7c915053e06a7a5b4118760202c572c9c35d23bd6ce8e73270b6a50e50ee + md5: 94d6ba8cd468668a9fb04193b0f4b36e + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - lcms2 >=2.16,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.5.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openjpeg >=2.5.3,<3.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx + license: HPND + size: 42852329 + timestamp: 1735930118976 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 381072 + timestamp: 1733698987122 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 + md5: 415816daf82e0b23a736a069a75e9da7 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 8381 + timestamp: 1726802424786 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda + sha256: 23c98a5000356e173568dc5c5770b53393879f946f3ace716bbdefac2a8b23d2 + md5: b11a4c6bf6f6f44e5e143f759ffa2087 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 118488 + timestamp: 1736601364156 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-client-17.0-hb77b528_0.conda + sha256: b27c0c8671bd95c205a61aeeac807c095b60bc76eb5021863f919036d7a964fc + md5: 07f45f1be1c25345faddb8db0de8039b + depends: + - dbus >=1.13.6,<2.0a0 + - libgcc-ng >=12 + - libglib >=2.78.3,<3.0a0 + - libsndfile >=1.2.2,<1.3.0a0 + - libsystemd0 >=255 + constrains: + - pulseaudio 17.0 *_0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 757633 + timestamp: 1705690081905 +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.9-h9e4cc4f_0_cpython.conda + sha256: 64fed5178f1e9c8ac0f572ac0ce37955f5dee7b2bcac665202bc14f1f7dd618a + md5: 5665f0079432f8848079c811cdb537d5 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.4,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Python-2.0 + size: 31581682 + timestamp: 1739521496324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.9-hc22306f_0_cpython.conda + sha256: cbf81a78d3ca6e663e827523e6ddbc28369cac488da047a28f83875eb52fe5f6 + md5: 1d105a6c46a753e3c0bab54a1ad24063 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - liblzma >=5.6.4,<6.0a0 + - libsqlite >=3.48.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Python-2.0 + size: 12947786 + timestamp: 1739520092196 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda + build_number: 5 + sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 + md5: b76f9b1c862128e56ac7aa8cd2333de9 + constrains: + - python 3.12.* *_cpython + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6278 + timestamp: 1723823099686 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-2.4.0-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2 + sha256: 6e08b3195666379cecc64a4c11a2c9e40f7b77ee4ff83673d49d5290b75269c1 + md5: 9731ae9086ed66acc02e8e4aba5d9990 + depends: + - blas * mkl + - filelock + - jinja2 + - llvm-openmp <16 + - mkl >=2018 + - networkx + - python >=3.12,<3.13.0a0 + - pytorch-cuda >=12.4,<12.5 + - pytorch-mutex 1.0 cuda + - pyyaml + - sympy + - torchtriton 3.0.0 + - typing_extensions + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD 3-Clause + license_family: BSD + size: 1441602064 + timestamp: 1720546288249 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/pytorch-2.4.0-py3.12_0.tar.bz2 + sha256: 085c312a4b2b8fb86d4ec3ea427d3c5bcd708f398f4bdc053a2a1123614893c1 + md5: 6618b115b8b33e9b41b840e1ffa0ca76 + depends: + - filelock + - jinja2 + - llvm-openmp <16 + - networkx + - python >=3.12,<3.13.0a0 + - pyyaml + - sympy + - typing_extensions + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD 3-Clause + license_family: BSD + size: 60396276 + timestamp: 1720541827975 +- conda: https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_7.tar.bz2 + sha256: 4ce6352f6270673aaf335909da2bbdd70ad8aaae489319e1e3a5ac0aae720314 + md5: 06635b1bbf5e2fef4a8b9b282500cd7b + depends: + - cuda-cudart >=12.4,<12.5 + - cuda-cupti >=12.4,<12.5 + - cuda-libraries >=12.4,<12.5 + - cuda-nvrtc >=12.4,<12.5 + - cuda-nvtx >=12.4,<12.5 + - cuda-runtime >=12.4,<12.5 + - libcublas >=12.4.5.8,<12.5.2.13 + - libcufft >=11.2.1.3,<11.2.3.18 + - libcusolver >=11.6.1.9,<11.6.2.40 + - libcusparse >=12.3.1.170,<12.4.1.18 + - libnpp >=12.2.5.30,<12.3.0.116 + - libnvjitlink >=12.4.127,<12.5.40 + - libnvjpeg >=12.3.1.117,<12.3.2.38 + arch: x86_64 + platform: linux + size: 7189 + timestamp: 1724179791784 +- conda: https://conda.anaconda.org/pytorch/noarch/pytorch-mutex-1.0-cuda.tar.bz2 + build_number: 100 + sha256: c16316183f51b74ca5eee4dcb8631052f328c0bbf244176734a0b7d390b81ee3 + md5: a948316e36fb5b11223b3fcfa93f8358 + size: 2906 + timestamp: 1628062930777 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h178313f_2.conda + sha256: 159cba13a93b3fe084a1eb9bda0a07afc9148147647f0d437c3c3da60980503b + md5: cf2485f39740de96e2a7f2bb18ed2fee + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 206903 + timestamp: 1737454910324 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h998013c_2.conda + sha256: ad225ad24bfd60f7719709791345042c3cb32da1692e62bd463b084cf140e00d + md5: 68149ed4d4e9e1c42d2ba1f27f08ca96 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 192148 + timestamp: 1737454886351 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.1-py312hbf22597_0.conda + sha256: 90ec0da0317d3d76990a40c61e1709ef859dd3d8c63838bad2814f46a63c8a2e + md5: 7cec8d0dac15a2d9fea8e49879aa779d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 382698 + timestamp: 1738271121975 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-26.2.1-py312hf4875e0_0.conda + sha256: 70d398b334668dc597d33e27847ede1b0829a639b9c91ee845355e52c86c2293 + md5: bfbefdb140b546a80827ff7c9d5ac7b8 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 364649 + timestamp: 1738271263898 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda + sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c + md5: 283b96675859b20a825f8fa30f311446 + depends: + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-only + license_family: GPL + size: 282480 + timestamp: 1740379431762 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda + sha256: 7db04684d3904f6151eff8673270922d31da1eea7fa73254d01c437f49702e34 + md5: 63ef3f6e6d6d5c589e64f11263dc5676 + depends: + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl2-2.32.50-h9b8e6db_1.conda + sha256: c253ddeafdc46bb53cdac722d1305a94bbbd9905e6a112e295ce7bb9e7a2f7e7 + md5: 0d27110a2f613abc268e31b3c1d5fb4f + depends: + - __glibc >=2.17,<3.0.a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - sdl3 >=3.2.4,<4.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 513266 + timestamp: 1740516135153 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sdl3-3.2.4-h3083f51_0.conda + sha256: d19f33b8c73cf461698b3f6d81aa354aed68d50f8d64f72c0cccc507d183803c + md5: c0d92f268209e0a0fd27954a5667c11d + depends: + - __glibc >=2.17,<3.0.a0 + - dbus >=1.13.6,<2.0a0 + - jack >=1.9.22,<1.10.0a0 + - libdrm >=2.4.124,<2.5.0a0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libstdcxx >=13 + - libudev1 >=256.7 + - libunwind >=1.6.2,<1.7.0a0 + - liburing >=2.9,<2.10.0a0 + - libusb >=1.0.27,<2.0a0 + - libxkbcommon >=1.8.0,<2.0a0 + - pulseaudio-client >=17.0,<17.1.0a0 + - wayland >=1.23.1,<2.0a0 + - xorg-libx11 >=1.8.11,<2.0a0 + - xorg-libxcursor >=1.2.3,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxscrnsaver >=1.2.4,<2.0a0 + arch: x86_64 + platform: linux + license: Zlib + size: 1728090 + timestamp: 1739801388543 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-0.2.0-hc8f76dd_10.conda + sha256: a1bde55ceb9dc5bd7879283d0f594a6ce65c07fda3de76230c65a4a5df47858a + md5: 480e915dfc6c592615ef6f217e615aa6 + depends: + - libsentencepiece 0.2.0 h8e10757_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312hb6b8a2b_10 + - sentencepiece-spm 0.2.0 h8e10757_10 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 19470 + timestamp: 1735628377167 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-0.2.0-h22a84ea_10.conda + sha256: 526c934b897131bd274697649c3b1c492a7d66c03368885a954112468b3c1424 + md5: 346abe448f69949a65473b336856860a + depends: + - libsentencepiece 0.2.0 he13a0af_10 + - python_abi 3.12.* *_cp312 + - sentencepiece-python 0.2.0 py312h155166a_10 + - sentencepiece-spm 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 19759 + timestamp: 1735628533490 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-python-0.2.0-py312hb6b8a2b_10.conda + sha256: 37df7fb659564587b950b39c936769d9b5095afb7bc223f42d6248a5540c6567 + md5: 7908b7b977e2e123a5f6a29906f2ce44 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2411182 + timestamp: 1735628106455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-python-0.2.0-py312h155166a_10.conda + sha256: 2d59614aeafbf54cc718805798c11c2d0a3b4b8d947d1bd81c87c484b4883077 + md5: 6e11367ef670296fce01fc9860be944d + depends: + - __osx >=11.0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2433303 + timestamp: 1735628083958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sentencepiece-spm-0.2.0-h8e10757_10.conda + sha256: 6b55e1121545357d63c3aa0766931720e8aafc52d88641ba7631c8cbaa68c52f + md5: e977b7be5ac26c55825e121e00b90493 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 h8e10757_10 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 89076 + timestamp: 1735628334078 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sentencepiece-spm-0.2.0-he13a0af_10.conda + sha256: b760aeee02e2afbfcce3f559e8a227aa4c94139157b1702fdfb41a057dad0e52 + md5: 9b7300f23cd330da8664cd072c162e5f + depends: + - __osx >=11.0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libsentencepiece 0.2.0 he13a0af_10 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 83826 + timestamp: 1735628514667 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-3.0.0-h5888daf_0.conda + sha256: 01ae1e86f79e05b9e687ef3b963e7f4f8a7554ac9f5af4dc1e3dc11ed79548b2 + md5: d86fc7eb811593abc06b328d3d72c001 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 2746763 + timestamp: 1740096577511 +- conda: https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.3-pyh2585a3b_105.conda + sha256: 929d939c5a8bcdc10a17501890918da68cf14a5883b36fddf77b8f0fbf040be2 + md5: 254cd5083ffa04d96e3173397a3d30f4 + depends: + - __unix + - cpython + - gmpy2 >=2.0.8 + - mpmath >=0.19 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 4523617 + timestamp: 1736248315124 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.13.0-hceb3a55_1.conda + sha256: 65463732129899770d54b1fbf30e1bb82fdebda9d7553caf08d23db4590cd691 + md5: ba7726b8df7b9d34ea80e82b097a4893 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 175954 + timestamp: 1732982638805 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda + sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 + md5: b50a57ba89c32b62428b71a875291c9b + depends: + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: TCL + license_family: BSD + size: 3145523 + timestamp: 1699202432999 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchtriton-3.0.0-py312.tar.bz2 + build_number: 1 + sha256: 5b6fe1e0a065ad16342daa82faff86700a4b413f7b07090b106c61ae74ce508f + md5: e53c6345daef28009cd51187a5c5af73 + depends: + - filelock + - python >=3.12,<3.13.0a0 + - pytorch + arch: x86_64 + platform: linux + license: MIT + size: 244858431 + timestamp: 1721333095180 +- conda: https://conda.anaconda.org/pytorch/linux-64/torchvision-0.19.0-py312_cu124.tar.bz2 + build_number: 0 + sha256: 100fa1adae081158dcac29149dce22942b71761f378aaa00a99a2d3ac3d9f971 + md5: 73e63c252ebd5db1cea947085d6f8e75 + depends: + - ffmpeg >=4.2 + - libjpeg-turbo + - libpng + - numpy >=1.23.5 + - pillow >=5.3.0,!=8.3.* + - python >=3.12,<3.13.0a0 + - pytorch 2.4.0 + - pytorch-cuda 12.4.* + - pytorch-mutex 1.0 cuda + - requests + constrains: + - cpuonly <0 + arch: x86_64 + platform: linux + license: BSD + size: 8820903 + timestamp: 1720563863032 +- conda: https://conda.anaconda.org/pytorch/osx-arm64/torchvision-0.19.0-py312_cpu.tar.bz2 + sha256: c08a2f63ab3a0c5d0b508a23e1c54193b8568fc471e0797ac15b69ee624880ae + md5: 555b0caf9b1cfdf1dd524974ac0ada21 + depends: + - libjpeg-turbo + - libpng + - numpy >=1.23.5 + - pillow >=5.3.0,!=8.3.* + - python >=3.12,<3.13.0a0 + - pytorch 2.4.0 + - requests + constrains: + - cpuonly + arch: arm64 + platform: osx + license: BSD + size: 7117982 + timestamp: 1720563247605 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda + sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 + md5: fb0605888a475d6a380ae1d1a819d976 + depends: + - __osx >=11.0 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 842549 + timestamp: 1732616081362 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 + md5: 9efbfdc37242619130ea42b1cc4ed861 + depends: + - colorama + - python >=3.9 + license: MPL-2.0 or MIT + size: 89498 + timestamp: 1735661472632 +- conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025a-h78e105d_0.conda + sha256: c4b1ae8a2931fe9b274c44af29c5475a85b37693999f8c792dad0f8c6734b1de + md5: dbcace4706afdfb7eb891f7b37d07c04 + license: LicenseRef-Public-Domain + size: 122921 + timestamp: 1737119101255 +- conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 + md5: 0a732427643ae5e0486a727927791da1 + depends: + - __glibc >=2.17,<3.0.a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=13 + - libstdcxx-ng >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 321561 + timestamp: 1724530461598 +- conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.41-hd8ed1ab_0.conda + sha256: caabd9f067a3a7075925b50246a0d4e832062fa1f7a4f9f89392c1ae82a26163 + md5: 790080ec41dc3f081663da8e99cd233e + license: MIT + license_family: MIT + size: 130039 + timestamp: 1739890398910 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 + sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5 + md5: 6c99772d483f566d59e25037fea2c4b1 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 897548 + timestamp: 1660323080555 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 + sha256: 76c7405bcf2af639971150f342550484efac18219c0203c5ee2e38b8956fe2a0 + md5: e7f6ed84d4623d52ee581325c1587a6b + depends: + - libgcc-ng >=10.3.0 + - libstdcxx-ng >=10.3.0 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 3357188 + timestamp: 1646609687141 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda + sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 + md5: f725c7425d6d7c15e31f3b99a88ea02f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 389475 + timestamp: 1727840188958 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 + md5: 4c3e9fab69804ec6077697922d70c6e2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 27198 + timestamp: 1734229639785 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.11-h4f16b4b_0.conda + sha256: a0e7fca9e341dc2455b20cd320fc1655e011f7f5f28367ecf8617cccd4bb2821 + md5: b6eb6d0cb323179af168df8fe16fb0a1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 835157 + timestamp: 1738613163812 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 + md5: 77c447f48cab5d3a15ac224edb86a968 + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 18487 + timestamp: 1727795205022 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 + md5: febbab7d15033c913d53c7a2c102309d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 50060 + timestamp: 1727752228921 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 + md5: 4bdb303603e9821baf5fe5fdff1dc8f8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19575 + timestamp: 1727794961233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxscrnsaver-1.2.4-hb9d3cd8_0.conda + sha256: 58e8fc1687534124832d22e102f098b5401173212ac69eb9fd96b16a3e2c8cb2 + md5: 303f7a0e9e0cd7d250bb6b952cecda90 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 14412 + timestamp: 1727899730073 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 + sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 + md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 88016 + timestamp: 1641347076660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hc1bb282_7.conda + sha256: 9e585569fe2e7d3bea71972cd4b9f06b1a7ab8fa7c5139f92a31cbceecf25a8a + md5: f7e6b65943cb73bce0143737fded08f1 + depends: + - __osx >=11.0 + - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + arch: arm64 + platform: osx + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 +- conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda + sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb + md5: a4cde595509a7ad9c13b1a3809bcfe51 + depends: + - __osx >=11.0 + - cffi >=1.11 + - python >=3.12,<3.13.0a0 + - python >=3.12,<3.13.0a0 *_cpython + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 330788 + timestamp: 1725305806565 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda + sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 + md5: d96942c06c3e84bfcc5efb038724a7fd + depends: + - __osx >=11.0 + - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 405089 + timestamp: 1714723101397 diff --git a/tutorials/max-graph-api/matmul.mojo b/tutorials/max-graph-api/matmul.mojo new file mode 100644 index 0000000000..4c57992b07 --- /dev/null +++ b/tutorials/max-graph-api/matmul.mojo @@ -0,0 +1,50 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from random import seed + +from max.engine import InferenceSession +from max.graph import Graph, TensorType +from max.tensor import Tensor, TensorShape + + +def main(): + # 1.Define the graph + graph = Graph(TensorType(DType.float32, "m", 2)) + # create a constant tensor + constant_value = Tensor[DType.float32](TensorShape(2, 2), 42.0) + print("constant value:", constant_value) + # create a constant node + constant_symbol = graph.constant(constant_value) + # create a matmul node + mm = graph[0] @ constant_symbol + graph.output(mm) + # verify + graph.verify() + + # 2. Load and compile the graph + session = InferenceSession() + model = session.load(graph) + + # 3. Execute the graph with inputs + # generate random inputs + seed(42) + input0 = Tensor[DType.float32].randn((2, 2)) + print("random 2x2 input0:", input0) + ret = model.execute("input0", input0^) + print("matmul 2x2 result:", ret.get[DType.float32]("output0")) + # with 3 x 2 matrix input + input0 = Tensor[DType.float32].randn((3, 2)) + print("random 3x2 input0:", input0) + ret = model.execute("input0", input0^) + print("matmul 3x2 result:", ret.get[DType.float32]("output0")) diff --git a/tutorials/max-graph-api/matmul.png b/tutorials/max-graph-api/matmul.png new file mode 100644 index 0000000000..28020eb932 Binary files /dev/null and b/tutorials/max-graph-api/matmul.png differ diff --git a/tutorials/max-graph-api/mnist.mojo b/tutorials/max-graph-api/mnist.mojo new file mode 100644 index 0000000000..8b9437f6a0 --- /dev/null +++ b/tutorials/max-graph-api/mnist.mojo @@ -0,0 +1,158 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from max import engine +from max.graph import Graph, TensorType, ops +from max.tensor import Tensor, TensorShape, TensorSpec +from memory import UnsafePointer, memcpy +from python import Python as py +from python import PythonObject + + +def load_model_weights() -> PythonObject: + np = py.import_module("numpy") + fin = py.evaluate('open("model_weights.npy", mode="rb")') + model_weights = np.load( + fin, allow_pickle=True + ).item() # note this is of type PythonObject + fin.close() + print("python type of model_weights:", py.type(model_weights)) + for item in model_weights.items(): + print(item[0], item[1].shape, py.type(item[1])) + + return model_weights + + +@always_inline +fn numpy_data_pointer[ + type: DType +](numpy_array: PythonObject) raises -> UnsafePointer[Scalar[type]]: + return numpy_array.__array_interface__["data"][0].unsafe_get_as_pointer[ + type + ]() + + +@always_inline +fn memcpy_from_numpy(array: PythonObject, tensor: Tensor) raises: + src = numpy_data_pointer[tensor.type](array) + dst = tensor._ptr + length = tensor.num_elements() + memcpy(dst, src, length) + + +@always_inline +fn numpy_to_tensor[type: DType](array: PythonObject) raises -> Tensor[type]: + shape = List[Int]() + array_shape = array.shape + for dim in array_shape: + shape.append(dim) + + out = Tensor[type](shape) + memcpy_from_numpy(array, out) + return out^ + + +def build_mnist_graph( + fc1w: Tensor[DType.float32], + fc1b: Tensor[DType.float32], + fc2w: Tensor[DType.float32], + fc2b: Tensor[DType.float32], +) -> Graph: + # Note: "batch" is a symbolic dim which is known ahead of time vs dynamic dim + graph = Graph(TensorType(DType.float32, "batch", 28 * 28)) + # PyTorch linear is defined as: x W^T + b so we need to transpose the weights + fc1 = ( + graph[0] @ ops.transpose(graph.constant(fc1w), 1, 0) + ) + graph.constant(fc1b) + + relu = ops.relu(fc1) + + fc2 = (relu @ ops.transpose(graph.constant(fc2w), 1, 0)) + graph.constant( + fc2b + ) + out = ops.softmax(fc2) # adding explicit softmax for inference prob + graph.output(out) + graph.verify() + return graph + + +def load_mnist_test_data() -> PythonObject: + torchvision = py.import_module("torchvision") + test_dataset = torchvision.datasets.MNIST( + root="./data", train=False, transform=None, download=False + ) + return test_dataset + + +def preprocess(image: PythonObject) -> PythonObject: + transforms = py.import_module("torchvision.transforms") + image_tensor = transforms.ToTensor()(image) + image_tensor_normalized = transforms.Normalize((0.5,), (0.5,))(image_tensor) + reshaped_image = image_tensor_normalized.reshape(1, 28 * 28).numpy() + return reshaped_image + + +def argmax(t: Tensor) -> List[Int]: + var res = List[Int](capacity=t.dim(0)) + for i in range(t.dim(0)): + var max_val = Scalar[t.type].MIN + var max_idx = 0 + for j in range(t.dim(1)): + if t[i, j] > max_val: + max_val = t[i, j] + max_idx = j + res.append(max_idx) + return res + + +def main(): + weights_dict = load_model_weights() + fc1w = numpy_to_tensor[DType.float32](weights_dict["fc1.weight"]) + fc1b = numpy_to_tensor[DType.float32](weights_dict["fc1.bias"]) + fc2w = numpy_to_tensor[DType.float32](weights_dict["fc2.weight"]) + fc2b = numpy_to_tensor[DType.float32](weights_dict["fc2.bias"]) + + mnist_graph = build_mnist_graph(fc1w^, fc1b^, fc2w^, fc2b^) + session = engine.InferenceSession() + model = session.load(mnist_graph) + + for name in model.get_model_input_names(): + print("input:", name[]) + + for name in model.get_model_output_names(): + print("output:", name[]) + + correct = 0 + total = 0 + # use batch size of 1 in this example + test_dataset = load_mnist_test_data() + for i in range(len(test_dataset)): + item = test_dataset[i] + image = item[0] + label = item[1] + + preprocessed_image = preprocess(image) + + output = model.execute("input0", preprocessed_image) + probs = output.get[DType.float32]("output0") + + predicted = argmax(probs)[0] + + correct += Int(predicted == label) + total += 1 + + print( + "Accuracy of the network on the 10000 test images:", + 100 * correct / total, + "%", + ) diff --git a/tutorials/max-graph-api/mnist.png b/tutorials/max-graph-api/mnist.png new file mode 100644 index 0000000000..30cdec9e96 Binary files /dev/null and b/tutorials/max-graph-api/mnist.png differ diff --git a/tutorials/max-graph-api/mnist.py b/tutorials/max-graph-api/mnist.py new file mode 100644 index 0000000000..eb7f2a971e --- /dev/null +++ b/tutorials/max-graph-api/mnist.py @@ -0,0 +1,123 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import random + +import numpy as np +import torch +import torch.nn as nn +import torch.nn.functional as F +import torch.optim as optim +import torchvision +import torchvision.transforms as transforms + + +def set_seeds(seed=42): + """Sets seed on CPU""" + random.seed(seed) + np.random.seed(seed) + torch.manual_seed(seed) + + +set_seeds() + + +class Model(nn.Module): + def __init__(self, input_size, hidden_size, num_classes): + super().__init__() + self.fc1 = nn.Linear(input_size, hidden_size) + self.relu = nn.ReLU() + self.fc2 = nn.Linear(hidden_size, num_classes) + + def forward(self, x): + x = self.fc1(x) + x = self.relu(x) + x = self.fc2(x) + return x + + +def main(): + input_size = 28 * 28 + hidden_size = 512 + num_classes = 10 + num_epochs = 5 + learning_rate = 0.001 + + preprocess = transforms.Compose( + [transforms.ToTensor(), transforms.Normalize((0.5,), (0.5,))] + ) + + train_dataset = torchvision.datasets.MNIST( + root="./data", train=True, transform=preprocess, download=True + ) + test_dataset = torchvision.datasets.MNIST( + root="./data", train=False, transform=preprocess, download=True + ) + + train_loader = torch.utils.data.DataLoader( + dataset=train_dataset, batch_size=128, shuffle=True + ) + test_loader = torch.utils.data.DataLoader( + dataset=test_dataset, batch_size=128, shuffle=False + ) + + model = Model(input_size, hidden_size, num_classes) + + loss_fn = nn.CrossEntropyLoss() + optimizer = optim.RMSprop(model.parameters(), lr=learning_rate) + + total_steps = len(train_loader) + for epoch in range(num_epochs): + for i, (images, labels) in enumerate(train_loader): + images = images.reshape(-1, 28 * 28) + outputs = model(images) + loss = loss_fn(outputs, labels) + optimizer.zero_grad() + loss.backward() + optimizer.step() + + if (i + 1) % 100 == 0: + print( + f"Epoch [{epoch + 1}/{num_epochs}], Step" + f" [{i + 1}/{total_steps}], Loss: {loss.item():.4f}" + ) + + model.eval() + + with torch.no_grad(): + correct = 0 + total = 0 + for images, labels in test_loader: + images = images.reshape(-1, 28 * 28) + outputs = model(images) + probs = F.softmax(outputs, dim=1) + predicted = torch.argmax(probs, 1) + total += labels.size(0) + correct += (predicted == labels).sum().item() + + print( + "Accuracy of the network on the 10000 test images:" + f" {100 * correct / total} %" + ) + + # save weights in numpy binary format + weights = {} + for name, param in model.named_parameters(): + weights[name] = param.detach().cpu().numpy() + + np.save("model_weights.npy", weights) + return + + +if __name__ == "__main__": + main() diff --git a/tutorials/max-graph-api/mojoproject.toml b/tutorials/max-graph-api/mojoproject.toml new file mode 100644 index 0000000000..7a073dbfb4 --- /dev/null +++ b/tutorials/max-graph-api/mojoproject.toml @@ -0,0 +1,19 @@ +[project] +authors = ["Modular "] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/", "pytorch"] +description = "Add a short description here" +name = "max-graph-api" +platforms = ["osx-arm64", "linux-64"] +version = "0.0.0" + +[tasks] +add = "mojo add.mojo" +matmul = "mojo matmul.mojo" +mnist = "python mnist.py && mojo mnist.mojo" +test = { depends-on = ["add", "matmul", "mnist"] } + +[dependencies] +max = "~=24.6" +pytorch = { version = "==2.4.0", channel = "pytorch" } +torchvision = { version = ">=0.19.0,<0.20", channel = "pytorch" } +numpy = "<2.0" diff --git a/tutorials/max-graph-python/.mypy.ini b/tutorials/max-graph-python/.mypy.ini new file mode 100644 index 0000000000..1215375ed9 --- /dev/null +++ b/tutorials/max-graph-python/.mypy.ini @@ -0,0 +1,2 @@ +[mypy] +ignore_missing_imports = True \ No newline at end of file diff --git a/tutorials/max-graph-python/README.md b/tutorials/max-graph-python/README.md new file mode 100644 index 0000000000..c1556efdad --- /dev/null +++ b/tutorials/max-graph-python/README.md @@ -0,0 +1,64 @@ +# Basic example for MAX Graph API in Python + +This is an example of building a model with the MAX Graph API in Python and +execute it with MAX Engine. + +For more explanation about this code, see the tutorial to [Get started with MAX +Graph in +Python](https://docs.modular.com/max/tutorials/get-started-with-max-graph-in-python). + +## Usage + +First, install [Magic](https://docs.modular.com/magic/). + +Then run the `magic run addition` command from the terminal: + +```sh +magic run addition +``` + +You should see the following output: + +```output +input names are: +name: input0, shape: [1], dtype: DType.float32 +name: input1, shape: [1], dtype: DType.float32 +result: [2.] +``` + +## Tests + +To run tests, use the following command: + +```sh +magic run pytest +``` + +You should see the following output: + +```output +==================== test session starts ==================== +platform darwin -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0 +rootdir: /max-repo +configfile: pyproject.toml +collected 6 items + +tests/test_addition.py ...... [100%] + +===================== 6 passed in 6.94s ===================== +``` + +## Lint and format + +To lint with `mypy` run the following command: + +```sh +magic run mypy +``` + +To format the python files: + +```sh +magic run black +magic run isort +``` diff --git a/tutorials/max-graph-python/pyproject.toml b/tutorials/max-graph-python/pyproject.toml new file mode 100644 index 0000000000..c07431b62f --- /dev/null +++ b/tutorials/max-graph-python/pyproject.toml @@ -0,0 +1,33 @@ +[project] +authors = [{name = "Modular", email = "hello@modular.com"}] +dependencies = [] +description = "Add two numbers" +name = "max_ops" +requires-python = ">=3.11,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["osx-arm64", "linux-64"] + +[tool.pixi.pypi-dependencies] +max_ops = { path = ".", editable = true } + +[tool.pixi.tasks] +addition = "python3 src/max_ops/addition.py" +mypy = "mypy . --config .mypy.ini" +black = "black src/max_ops/addition.py tests/test_addition.py" +isort = "isort src/max_ops/addition.py tests/test_addition.py" +test = { depends-on = ["addition"] } + + +[tool.pixi.dependencies] +max = "~=24.6" +numpy = "<2.0" +pytest = ">=8.3.3,<9" +black = ">=24.10.0,<25" +mypy = ">=1.13.0,<2" diff --git a/tutorials/max-graph-python/src/max_ops/__init__.py b/tutorials/max-graph-python/src/max_ops/__init__.py new file mode 100644 index 0000000000..75c4f824f2 --- /dev/null +++ b/tutorials/max-graph-python/src/max_ops/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/max-graph-python/src/max_ops/addition.py b/tutorials/max-graph-python/src/max_ops/addition.py new file mode 100644 index 0000000000..4528d4a549 --- /dev/null +++ b/tutorials/max-graph-python/src/max_ops/addition.py @@ -0,0 +1,51 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from typing import Any + +import numpy as np +from max import engine +from max.dtype import DType +from max.graph import Graph, TensorType, ops + + +def add_tensors(a: np.ndarray, b: np.ndarray) -> dict[str, Any]: + # 1. Build the graph + input_type = TensorType(dtype=DType.float32, shape=(1,)) + with Graph( + "simple_add_graph", input_types=(input_type, input_type) + ) as graph: + lhs, rhs = graph.inputs + out = ops.add(lhs, rhs) + graph.output(out) + print("final graph:", graph) + + # 2. Create an inference session + session = engine.InferenceSession() + model = session.load(graph) + + for tensor in model.input_metadata: + print( + f"name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}" + ) + + # 3. Execute the graph + ret = model.execute(a, b)[0] + print("result:", ret) + return ret + + +if __name__ == "__main__": + input0 = np.array([1.0], dtype=np.float32) + input1 = np.array([1.0], dtype=np.float32) + add_tensors(input0, input1) diff --git a/tutorials/max-graph-python/tests/__init__.py b/tutorials/max-graph-python/tests/__init__.py new file mode 100644 index 0000000000..75c4f824f2 --- /dev/null +++ b/tutorials/max-graph-python/tests/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/max-serve-cloud-configs/README.md b/tutorials/max-serve-cloud-configs/README.md new file mode 100644 index 0000000000..698896c488 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/README.md @@ -0,0 +1,4 @@ +# MAX Serve cloud configurations + +For usage instructions, see the tutorial to [Deploy Llama 3 on GPU with MAX +Serve](https://docs.modular.com/max/tutorials/max-serve-local-to-cloud). diff --git a/tutorials/max-serve-cloud-configs/aws/max-serve-aws.yaml b/tutorials/max-serve-cloud-configs/aws/max-serve-aws.yaml new file mode 100644 index 0000000000..cf63426766 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/aws/max-serve-aws.yaml @@ -0,0 +1,250 @@ +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +AWSTemplateFormatVersion: '2010-09-09' +Description: CloudFormation template to deploy MAX Serve on an EC2 instance. + +Parameters: + InstanceType: + Type: String + Default: g5.4xlarge + AllowedValues: + - g5.4xlarge + Description: EC2 instance type for the MAX Serve deployment. + + AmiId: + Type: AWS::EC2::Image::Id + Default: ami-02769e6d1f6a88067 + Description: AMI ID for Deep Learning Base OSS Nvidia Driver AMI (Amazon Linux 2) in us-east-1. + + HuggingFaceHubToken: + Type: String + NoEcho: true + Description: HuggingFace Hub API Token for accessing models. + + HuggingFaceRepoId: + Type: String + Default: modularai/Llama-3.1-8B-Instruct-GGUF + Description: Hugging Face Repository ID for the Model. + +Resources: + MaxServeInstanceProfile: + Type: AWS::IAM::InstanceProfile + Properties: + Roles: + - !Ref MaxServeInstanceRole + + MaxServeInstanceRole: + Type: AWS::IAM::Role + Properties: + AssumeRolePolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Principal: + Service: + - ec2.amazonaws.com + Action: + - sts:AssumeRole + ManagedPolicyArns: + - arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly + - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore + - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy + Policies: + - PolicyName: CloudWatchLogsAccess + PolicyDocument: + Version: '2012-10-17' + Statement: + - Effect: Allow + Action: + - logs:CreateLogStream + - logs:PutLogEvents + - logs:DescribeLogStreams + Resource: !Sub 'arn:aws:logs:${AWS::Region}:${AWS::AccountId}:log-group:/aws/ec2/${AWS::StackName}-logs:*' + + MaxServeLogGroup: + Type: AWS::Logs::LogGroup + DeletionPolicy: Delete + UpdateReplacePolicy: Delete + Properties: + LogGroupName: !Sub '/aws/ec2/${AWS::StackName}-logs' + RetentionInDays: 1 + + MaxServeSecurityGroup: + Type: AWS::EC2::SecurityGroup + Properties: + GroupDescription: Enable HTTP access on port 80 and SSH on port 22 + SecurityGroupIngress: + - IpProtocol: tcp + FromPort: 80 + ToPort: 80 + CidrIp: 0.0.0.0/0 + - IpProtocol: tcp + FromPort: 22 + ToPort: 22 + CidrIp: 0.0.0.0/0 + + MaxServeInstance: + Type: AWS::EC2::Instance + Properties: + InstanceType: !Ref InstanceType + ImageId: !Ref AmiId + SecurityGroupIds: + - !Ref MaxServeSecurityGroup + IamInstanceProfile: !Ref MaxServeInstanceProfile + BlockDeviceMappings: + - DeviceName: /dev/xvda + Ebs: + VolumeSize: 100 + VolumeType: gp3 + DeleteOnTermination: true + UserData: + 'Fn::Base64': !Sub | + #!/bin/bash + set -xe # Enable detailed logging + # Redirect all output to a log file for debugging + exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 + + echo "Starting user data script execution..." + + # Install CloudWatch agent first + echo "Installing CloudWatch agent..." + sudo yum install -y amazon-cloudwatch-agent + + # Create log files and directory with proper permissions + sudo mkdir -p /var/log/max-serve + sudo touch /var/log/max-serve/container.log + sudo chmod 644 /var/log/max-serve/container.log + sudo chown root:root /var/log/max-serve/container.log + + # Configure CloudWatch agent early + cat < /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json + { + "agent": { + "metrics_collection_interval": 60, + "run_as_user": "root" + }, + "logs": { + "logs_collected": { + "files": { + "collect_list": [ + { + "file_path": "/var/log/messages", + "log_group_name": "/aws/ec2/${AWS::StackName}-logs", + "log_stream_name": "instance-logs", + "timestamp_format": "%b %d %H:%M:%S", + "timezone": "UTC" + }, + { + "file_path": "/var/log/max-serve/container.log", + "log_group_name": "/aws/ec2/${AWS::StackName}-logs", + "log_stream_name": "instance-logs", + "timestamp_format": "%Y-%m-%d %H:%M:%S", + "timezone": "UTC" + }, + { + "file_path": "/var/log/user-data.log", + "log_group_name": "/aws/ec2/${AWS::StackName}-logs", + "log_stream_name": "instance-logs", + "timestamp_format": "%Y-%m-%d %H:%M:%S", + "timezone": "UTC" + } + ] + } + }, + "force_flush_interval": 15 + } + } + EOF + + # Start the CloudWatch agent + sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json -s + sudo systemctl enable amazon-cloudwatch-agent + sudo systemctl start amazon-cloudwatch-agent + + # Verify CloudWatch agent is running + sudo systemctl status amazon-cloudwatch-agent + + # Continue with Docker installation and rest of the setup + echo "Installing docker..." + sudo yum update -y + sudo yum install -y docker aws-cfn-bootstrap + sudo systemctl enable docker + sudo systemctl start docker + sudo usermod -a -G docker ec2-user + + # Verify docker is running + echo "Checking docker status..." + sudo systemctl status docker + docker --version + + # Install NVIDIA Container Toolkit + echo "Installing NVIDIA Container Toolkit..." + distribution=$(. /etc/os-release;echo $ID$VERSION_ID) + curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo + sudo yum clean expire-cache + sudo yum install -y nvidia-docker2 + sudo systemctl restart docker + + # Verify NVIDIA docker installation + echo "Checking NVIDIA docker installation..." + nvidia-smi + docker info | grep -i nvidia + + # Pull and run the MAX Serve container + echo "Pulling and running MAX Serve container..." + # Add error checking for docker pull + if ! sudo docker pull docker.modular.com/modular/max-openai-api:latest; then + echo "Failed to pull container image" + /opt/aws/bin/cfn-signal -e 1 --stack ${AWS::StackName} --resource MaxServeInstance --region ${AWS::Region} + exit 1 + fi + + sudo docker images + + # Start the container and capture logs + CONTAINER_ID=$(sudo docker run -d \ + --env "HF_TOKEN=${HuggingFaceHubToken}" \ + --env "HF_HUB_ENABLE_HF_TRANSFER=1" \ + -v /home/ec2-user/.cache/huggingface:/root/.cache/huggingface \ + --gpus 1 \ + -p 80:8000 \ + --ipc=host \ + docker.modular.com/modular/max-openai-api:latest \ + --model-path ${HuggingFaceRepoId}) + + if [ $? -ne 0 ]; then + echo "Failed to start container" + /opt/aws/bin/cfn-signal -e 1 --stack ${AWS::StackName} --resource MaxServeInstance --region ${AWS::Region} + exit 1 + fi + + # Start following container logs in the background + sudo docker logs -f $CONTAINER_ID > /var/log/max-serve/container.log 2>&1 & + + # Verify container is running + echo "Checking container status..." + if ! sudo docker ps | grep max-openai-api; then + echo "Container is not running" + /opt/aws/bin/cfn-signal -e 1 --stack ${AWS::StackName} --resource MaxServeInstance --region ${AWS::Region} + exit 1 + fi + +Outputs: + InstanceId: + Description: Instance ID of the EC2 instance + Value: !Ref MaxServeInstance + + PublicDNS: + Description: Public DNS of the EC2 instance + Value: !GetAtt MaxServeInstance.PublicDnsName diff --git a/tutorials/max-serve-cloud-configs/aws/notify.sh b/tutorials/max-serve-cloud-configs/aws/notify.sh new file mode 100644 index 0000000000..4d4b241536 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/aws/notify.sh @@ -0,0 +1,106 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +REGION=$1 +STACK_NAME=$2 +PUBLIC_IP=$3 +MAX_WAIT_MINUTES=30 +START_TIME=$(date +%s) +LOG_GROUP="/aws/ec2/$STACK_NAME-logs" + +fetch_logs() { + local stream_name=$1 + local stream_type=$2 + local limit=$3 + echo "=== $stream_type Logs ===" + + if [ -n "$limit" ]; then + aws logs get-log-events \ + --log-group-name "$LOG_GROUP" \ + --log-stream-name "$stream_name" \ + --limit $limit \ + --region $REGION \ + --query 'events[*].[timestamp,message]' \ + --output text + else + aws logs get-log-events \ + --log-group-name "$LOG_GROUP" \ + --log-stream-name "$stream_name" \ + --start-time $(($(date +%s) - 60))000 \ + --region $REGION \ + --query 'events[*].[timestamp,message]' \ + --output text + fi + echo "====================" +} + +check_server_status() { + echo "🔍 Checking server health..." + + if echo "$EC2_LOGS" | grep -q "Pulling from docker.modular.com/modular/max-openai-api"; then + echo "⏳ Docker image is still being pulled..." + return 1 + fi + + if curl -s -f "http://$PUBLIC_IP/v1/health" >/dev/null; then + echo "✅ Server health check passed!" + return 0 + fi + + if echo "$EC2_LOGS" | grep -q "Building\|Compiling\|Starting download of model"; then + echo "⏳ Server is initializing (compiling model)..." + return 1 + fi + + echo "⏳ Server still starting up..." + return 1 +} + +echo "🔍 Starting monitoring for MAX server (max wait: ${MAX_WAIT_MINUTES} minutes)..." + +while true; do + current_time=$(date +%s) + elapsed_minutes=$(((current_time - START_TIME) / 60)) + + if [ $elapsed_minutes -ge $MAX_WAIT_MINUTES ]; then + echo "❌ Timeout after ${MAX_WAIT_MINUTES} minutes. Server might still be starting up." + exit 1 + fi + + EC2_LOG_STREAM=$(aws logs describe-log-streams \ + --log-group-name "$LOG_GROUP" \ + --log-stream-name-prefix "instance-logs" \ + --region $REGION \ + --query "logStreams[0].logStreamName" \ + --output text) + + echo "⏳ Checking logs... (${elapsed_minutes}/${MAX_WAIT_MINUTES} minutes)" + + if [ "$EC2_LOG_STREAM" != "None" ]; then + echo "📜 Instance Logs:" + EC2_LOGS=$(fetch_logs "$EC2_LOG_STREAM" "Instance" 50) + if check_server_status "$EC2_LOGS"; then + echo "✅ Server is ready! (took ${elapsed_minutes} minutes)" + echo "📋 Latest logs:" + echo "$EC2_LOGS" + exit 0 + fi + else + echo "⏳ Logs not yet available..." + fi + + echo "⏳ Server still starting up... checking again in 60 seconds" + echo "-------------------------------------------" + sleep 60 +done diff --git a/tutorials/max-serve-cloud-configs/azure/max-serve-azure.json b/tutorials/max-serve-cloud-configs/azure/max-serve-azure.json new file mode 100644 index 0000000000..554d50d8f0 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/azure/max-serve-azure.json @@ -0,0 +1,252 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "metadata": { + "_generator": { + "name": "Modular Inc.", + "copyright": "Copyright (c) 2025, Modular Inc. All rights reserved.", + "license": "Licensed under the Apache License v2.0 with LLVM Exceptions: https://llvm.org/LICENSE.txt", + "disclaimer": "Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License." + } + }, + "parameters": { + "adminUsername": { + "type": "string", + "metadata": { + "description": "Admin username for the virtual machine." + } + }, + "adminPassword": { + "type": "securestring", + "metadata": { + "description": "Admin password for the virtual machine." + } + }, + "vmSize": { + "type": "string", + "defaultValue": "Standard_NV36ads_A10_v5", + "metadata": { + "description": "Size of the virtual machine." + } + }, + "osDiskSizeGB": { + "type": "int", + "defaultValue": 128, + "metadata": { + "description": "OS disk size in GB." + } + }, + "vnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/16", + "metadata": { + "description": "Address space for the virtual network." + } + }, + "subnetAddressPrefix": { + "type": "string", + "defaultValue": "10.0.0.0/24", + "metadata": { + "description": "Subnet address space." + } + }, + "startupScript": { + "type": "string", + "metadata": { + "description": "Base64-encoded startup script." + } + }, + "location": { + "type": "string", + "defaultValue": "westus3", + "metadata": { + "description": "Location for all resources." + } + } + }, + "resources": [ + { + "type": "Microsoft.Network/virtualNetworks", + "apiVersion": "2021-03-01", + "name": "maxServeVNet", + "location": "[parameters('location')]", + "properties": { + "addressSpace": { + "addressPrefixes": [ + "[parameters('vnetAddressPrefix')]" + ] + }, + "subnets": [ + { + "name": "maxServeSubnet", + "properties": { + "addressPrefix": "[parameters('subnetAddressPrefix')]" + } + } + ] + } + }, + { + "type": "Microsoft.Network/publicIPAddresses", + "apiVersion": "2021-03-01", + "name": "maxServePublicIP", + "location": "[parameters('location')]", + "properties": { + "publicIPAllocationMethod": "Dynamic" + } + }, + { + "type": "Microsoft.Network/networkSecurityGroups", + "apiVersion": "2021-02-01", + "name": "maxServeNSG", + "location": "[parameters('location')]", + "properties": { + "securityRules": [ + { + "name": "allowHTTP", + "properties": { + "priority": 100, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "80", + "description": "Allow HTTP traffic on port 80" + } + }, + { + "name": "allowSSH", + "properties": { + "priority": 200, + "protocol": "Tcp", + "access": "Allow", + "direction": "Inbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "22", + "description": "Allow SSH traffic on port 22" + } + }, + { + "name": "allowOutbound", + "properties": { + "priority": 300, + "protocol": "Tcp", + "access": "Allow", + "direction": "Outbound", + "sourceAddressPrefix": "*", + "sourcePortRange": "*", + "destinationAddressPrefix": "*", + "destinationPortRange": "*", + "description": "Allow all outbound traffic" + } + } + ] + } + }, + { + "type": "Microsoft.Network/networkInterfaces", + "apiVersion": "2021-03-01", + "name": "maxServeNIC", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/publicIPAddresses', 'maxServePublicIP')]", + "[resourceId('Microsoft.Network/virtualNetworks', 'maxServeVNet')]", + "[resourceId('Microsoft.Network/networkSecurityGroups', 'maxServeNSG')]" + ], + "properties": { + "ipConfigurations": [ + { + "name": "ipconfig1", + "properties": { + "subnet": { + "id": "[concat(resourceId('Microsoft.Network/virtualNetworks', 'maxServeVNet'), '/subnets/maxServeSubnet')]" + }, + "privateIPAllocationMethod": "Dynamic", + "publicIPAddress": { + "id": "[resourceId('Microsoft.Network/publicIPAddresses', 'maxServePublicIP')]" + } + } + } + ], + "networkSecurityGroup": { + "id": "[resourceId('Microsoft.Network/networkSecurityGroups', 'maxServeNSG')]" + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines", + "apiVersion": "2021-03-01", + "name": "maxServeVM", + "location": "[parameters('location')]", + "dependsOn": [ + "[resourceId('Microsoft.Network/networkInterfaces', 'maxServeNIC')]" + ], + "plan": { + "name": "nvaie_gpu_1_gen2", + "publisher": "nvidia", + "product": "nvidia-ai-enterprise" + }, + "properties": { + "hardwareProfile": { + "vmSize": "[parameters('vmSize')]" + }, + "osProfile": { + "computerName": "maxServeVM", + "adminUsername": "[parameters('adminUsername')]", + "adminPassword": "[parameters('adminPassword')]" + }, + "storageProfile": { + "imageReference": { + "publisher": "nvidia", + "offer": "nvidia-ai-enterprise", + "sku": "nvaie_gpu_1_gen2", + "version": "24.07.03" + }, + "osDisk": { + "createOption": "FromImage", + "managedDisk": { + "storageAccountType": "Standard_LRS" + }, + "diskSizeGB": "[parameters('osDiskSizeGB')]" + } + }, + "networkProfile": { + "networkInterfaces": [ + { + "id": "[resourceId('Microsoft.Network/networkInterfaces', 'maxServeNIC')]" + } + ] + } + } + }, + { + "type": "Microsoft.Compute/virtualMachines/extensions", + "apiVersion": "2021-03-01", + "name": "maxServeVM/customScriptExtension", + "location": "[resourceGroup().location]", + "dependsOn": [ + "[resourceId('Microsoft.Compute/virtualMachines', 'maxServeVM')]" + ], + "properties": { + "publisher": "Microsoft.Azure.Extensions", + "type": "CustomScript", + "typeHandlerVersion": "2.1", + "autoUpgradeMinorVersion": true, + "settings": { + "fileUris": [], + "script": "[parameters('startupScript')]" + } + } + } + ], + "outputs": { + "vmName": { + "type": "string", + "value": "[reference('maxServeVM').osProfile.computerName]" + } + } +} diff --git a/tutorials/max-serve-cloud-configs/azure/notify.sh b/tutorials/max-serve-cloud-configs/azure/notify.sh new file mode 100644 index 0000000000..c038b8b10a --- /dev/null +++ b/tutorials/max-serve-cloud-configs/azure/notify.sh @@ -0,0 +1,113 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +RESOURCE_GROUP=$1 +VM_PASSWORD=$2 +PUBLIC_IP=$3 +VM_NAME=maxServeVM +MAX_WAIT_MINUTES=30 +START_TIME=$(date +%s) + +fetch_logs() { + echo "=== Azure VM Logs ===" + echo "📋 Attempting to fetch logs from VM at ${PUBLIC_IP}..." + + LOGS=$(sshpass -p "$VM_PASSWORD" ssh -o StrictHostKeyChecking=no -o ConnectTimeout=50 -v azureuser@$PUBLIC_IP " + # First check if container is running + CONTAINER_ID=\$(sudo docker ps -q -f ancestor=docker.modular.com/modular/max-openai-api:latest) + if [ -n \"\$CONTAINER_ID\" ]; then + echo '=== Docker Container Found ===' + sudo docker logs \$CONTAINER_ID + else + echo '=== Checking Deployment Logs ===' + # Check deployment logs if container isn't running yet + sudo cat /var/log/azure/custom-script/handler.log 2>/dev/null || echo 'No handler.log'; + sudo cat /var/lib/waagent/custom-script/download/0/stdout 2>/dev/null || echo 'No stdout'; + sudo cat /var/lib/waagent/custom-script/download/0/stderr 2>/dev/null || echo 'No stderr'; + fi + " 2>&1) + + if [ $? -ne 0 ]; then + echo "❌ Failed to connect to VM or fetch logs" + echo "Debug info: $LOGS" + return 1 + fi + + echo "$LOGS" + echo "====================" +} + +check_server_status() { + local logs=$1 + echo "🔍 Checking logs for server status..." + + if echo "$logs" | grep -q "Pulling from docker.modular.com/modular/max-openai-api"; then + echo "⏳ Docker image is still being pulled..." + return 1 + fi + + if curl -s -f "http://$PUBLIC_IP/v1/health" >/dev/null; then + echo "✅ Server health check passed!" + return 0 + fi + + if echo "$logs" | grep -q "Building\|Compiling\|Starting download of model"; then + echo "⏳ Server is initializing (compiling model)..." + return 1 + fi + + echo "⏳ Server still starting up..." + return 1 +} + +echo "🔍 Starting monitoring for MAX server (max wait: ${MAX_WAIT_MINUTES} minutes)..." + +if ! az vm show -g "$RESOURCE_GROUP" -n "$VM_NAME" &>/dev/null; then + echo "❌ VM not found. Please check if VM exists in resource group ${RESOURCE_GROUP}" + exit 1 +fi + +while true; do + current_time=$(date +%s) + elapsed_minutes=$(((current_time - START_TIME) / 60)) + + if [ $elapsed_minutes -ge $MAX_WAIT_MINUTES ]; then + echo "❌ Timeout after ${MAX_WAIT_MINUTES} minutes. Server might still be starting up." + echo "👉 You can manually check the logs by:" + echo " ssh azureuser@$PUBLIC_IP" + echo " sudo cat /var/log/azure/custom-script/handler.log" + echo " sudo cat /var/lib/waagent/custom-script/download/0/stdout" + echo " sudo cat /var/lib/waagent/custom-script/download/0/stderr" + exit 1 + fi + + echo "⏳ Checking logs... (${elapsed_minutes}/${MAX_WAIT_MINUTES} minutes)" + + LOGS=$(fetch_logs) + + if [ -n "$LOGS" ]; then + if check_server_status "$LOGS"; then + echo "✅ Server is ready! (took ${elapsed_minutes} minutes)" + echo "📋 Latest logs:" + echo "$LOGS" + exit 0 + fi + else + echo "⏳ Logs not yet available..." + fi + + echo "⏳ Server still starting up... checking again in 60 seconds" + echo "-------------------------------------------" + sleep 60 +done diff --git a/tutorials/max-serve-cloud-configs/gcp/max-serve-gcp.jinja b/tutorials/max-serve-cloud-configs/gcp/max-serve-gcp.jinja new file mode 100644 index 0000000000..7f5a20dfec --- /dev/null +++ b/tutorials/max-serve-cloud-configs/gcp/max-serve-gcp.jinja @@ -0,0 +1,120 @@ +{# +===----------------------------------------------------------------------=== +Copyright (c) 2025, Modular Inc. All rights reserved. + +Licensed under the Apache License v2.0 with LLVM Exceptions: +https://llvm.org/LICENSE.txt + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +===----------------------------------------------------------------------=== +#} + +resources: +# Main compute instance +- name: {{ properties['instanceName'] }} + type: compute.v1.instance + properties: + zone: {{ properties['zone'] }} + machineType: zones/{{ properties['zone'] }}/machineTypes/{{ properties['machineType'] }} + guestAccelerators: + - acceleratorType: zones/{{ properties['zone'] }}/acceleratorTypes/{{ properties['acceleratorType'] }} + acceleratorCount: {{ properties['acceleratorCount'] }} + disks: + - deviceName: boot + boot: true + autoDelete: true + initializeParams: + sourceImage: projects/deeplearning-platform-release/global/images/{{ properties['sourceImage'] }} + diskSizeGb: 100 # disk space in GB + networkInterfaces: + - network: global/networks/default + accessConfigs: + - name: External NAT + type: ONE_TO_ONE_NAT + serviceAccounts: + - email: default + scopes: + - https://www.googleapis.com/auth/cloud-platform + scheduling: + preemptible: false + onHostMaintenance: TERMINATE # Disables live migration for GPU instances + automaticRestart: true + metadata: + items: + - key: startup-script + value: | + #!/bin/bash + set -xe # Enable detailed logging + curl -sSO https://dl.google.com/cloudagents/add-logging-agent-repo.sh + sudo bash add-logging-agent-repo.sh + + # Update and install dependencies + sudo apt-get update + sudo apt-get install -y google-fluentd curl apt-transport-https ca-certificates gnupg lsb-release software-properties-common + + # Configure Stackdriver logging + sudo service google-fluentd start + sudo systemctl enable google-fluentd + + # Install the NVIDIA drivers if not installed + if [ ! -f /opt/google/cuda-installer ]; then + sudo /opt/deeplearning/install-driver.sh + fi + + # Add Docker GPG key and Docker repository + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg + echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \ + $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null + + # Install Docker + sudo apt-get update + sudo apt-get install -y docker-ce docker-ce-cli containerd.io + + # Add NVIDIA Docker repository + distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ + && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \ + && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list + + # Install NVIDIA container runtime + sudo apt-get update + sudo apt-get install -y nvidia-container-toolkit + sudo systemctl restart docker + + # Add user to docker group + sudo usermod -aG docker $(whoami) + + docker run \ + --env "HF_TOKEN={{ properties['huggingFaceHubToken'] }}" \ + --env "HF_HUB_ENABLE_HF_TRANSFER=1" \ + -v $HOME/.cache/huggingface:/root/.cache/huggingface \ + --gpus 1 \ + -p 80:8000 \ + --ipc host \ + docker.modular.com/modular/max-openai-api:latest \ + --model-path {{ properties['huggingFaceRepoId'] }} + +# Add firewall rule directly in template +- name: allow-http + type: compute.v1.firewall + properties: + network: global/networks/default + sourceRanges: ["0.0.0.0/0"] + targetTags: ["http-server"] + allowed: + - IPProtocol: tcp + ports: ["80"] + +# Outputs section to output public IP and instance details +outputs: +- name: instanceName + value: $(ref.{{ properties['instanceName'] }}.name) + description: Name of the GCP Compute instance. + +- name: instancePublicIP + value: $(ref.{{ properties['instanceName'] }}.networkInterfaces[0].accessConfigs[0].natIP) + description: Public IP address of the GCP Compute instance. diff --git a/tutorials/max-serve-cloud-configs/gcp/notify.sh b/tutorials/max-serve-cloud-configs/gcp/notify.sh new file mode 100644 index 0000000000..89e7262f62 --- /dev/null +++ b/tutorials/max-serve-cloud-configs/gcp/notify.sh @@ -0,0 +1,103 @@ +#!/bin/bash +##===----------------------------------------------------------------------===## +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +##===----------------------------------------------------------------------===## + +PROJECT_ID=$1 +INSTANCE_NAME=$2 +ZONE=$3 +PUBLIC_IP=$4 +MAX_WAIT_MINUTES=30 +START_TIME=$(date +%s) + +fetch_logs() { + local instance_id=$1 + local limit=${2:-50} + echo "=== GCP Instance Logs ===" + + echo "Querying logs for instance_id: ${instance_id}" + + gcloud logging read \ + "resource.type=gce_instance AND \ + resource.labels.instance_id=${instance_id} AND \ + jsonPayload.message:*" \ + --project="${PROJECT_ID}" \ + --format="table(timestamp,jsonPayload.message)" \ + --limit=10 + + echo "====================" +} + +check_server_status() { + local logs=$1 + echo "🔍 Checking server health..." + + if echo "$logs" | grep -q "Pulling from docker.modular.com/modular/max-openai-api"; then + echo "⏳ Docker image is still being pulled..." + return 1 + fi + + if curl -s -f "http://${PUBLIC_IP}/v1/health" >/dev/null; then + echo "✅ Server health check passed!" + return 0 + fi + + if echo "$logs" | grep -q "Building\|Compiling\|Starting download of model"; then + echo "⏳ Server is initializing (compiling model)..." + return 1 + fi + + echo "⏳ Server still starting up..." + return 1 +} + +echo "🔍 Starting monitoring for MAX server (max wait: ${MAX_WAIT_MINUTES} minutes)..." + +# Get instance ID +INSTANCE_ID=$(gcloud compute instances describe "${INSTANCE_NAME}" \ + --zone="${ZONE}" \ + --project="${PROJECT_ID}" \ + --format="value(id)") + +if [ -z "$INSTANCE_ID" ]; then + echo "❌ Failed to get instance ID. Please check if instance exists." + exit 1 +fi + +while true; do + current_time=$(date +%s) + elapsed_minutes=$(((current_time - START_TIME) / 60)) + + if [ $elapsed_minutes -ge $MAX_WAIT_MINUTES ]; then + echo "❌ Timeout after ${MAX_WAIT_MINUTES} minutes. Server might still be starting up." + exit 1 + fi + + echo "⏳ Checking logs... (${elapsed_minutes}/${MAX_WAIT_MINUTES} minutes)" + + LOGS=$(fetch_logs "$INSTANCE_ID") + + if [ -n "$LOGS" ]; then + if check_server_status "$LOGS"; then + echo "✅ Server is ready! (took ${elapsed_minutes} minutes)" + echo "📋 Latest logs:" + echo "$LOGS" + exit 0 + fi + else + echo "⏳ Logs not yet available..." + fi + + echo "⏳ Server still starting up... checking again in 60 seconds" + echo "-------------------------------------------" + sleep 60 +done diff --git a/tutorials/run-embeddings-with-max-serve/.gitattributes b/tutorials/run-embeddings-with-max-serve/.gitattributes new file mode 100644 index 0000000000..8f61a8e774 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/.gitattributes @@ -0,0 +1,2 @@ +# SCM syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/tutorials/run-embeddings-with-max-serve/.gitignore b/tutorials/run-embeddings-with-max-serve/.gitignore new file mode 100644 index 0000000000..9279c11d44 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/.gitignore @@ -0,0 +1,6 @@ + +# pixi environments +.pixi +*.egg-info +# magic environments +.magic diff --git a/tutorials/run-embeddings-with-max-serve/README.md b/tutorials/run-embeddings-with-max-serve/README.md new file mode 100644 index 0000000000..2afdea295e --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/README.md @@ -0,0 +1,20 @@ +# Embeddings endpoint + +A document management system that uses embeddings and clustering to organize and +search through documents semantically. + +1. Start the embeddings endpoint: + + ```bash + max-pipelines serve --model-path=sentence-transformers/all-mpnet-base-v2 + ``` + +1. Run the system: + + ```bash + python -m embeddings.kb_system + ``` + +For a complete walkthrough, see the tutorial to [Deploy a text embedding model +with an +endpoint](https://docs.modular.com/max/tutorials/run-embeddings-with-max-serve) diff --git a/tutorials/run-embeddings-with-max-serve/pyproject.toml b/tutorials/run-embeddings-with-max-serve/pyproject.toml new file mode 100644 index 0000000000..ff683e51a7 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/pyproject.toml @@ -0,0 +1,25 @@ +[project] +authors = [{name = "Modular", email = "hello@modular.com"}] +dependencies = [] +description = "Run an embeddings model using the all-mpnet-base-v2 model" +name = "embeddings" +requires-python = ">= 3.11" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["https://conda.modular.com/max-nightly", "https://conda.modular.com/max", "https://repo.prefix.dev/modular-community", "conda-forge"] +platforms = ["osx-arm64"] + +[tool.pixi.pypi-dependencies] +embeddings = { path = ".", editable = true } + +[tool.pixi.tasks] + +[tool.pixi.dependencies] +numpy = ">=2.2.2,<3" +scikit-learn = ">=1.6.1,<2" +requests = ">=2.32.3,<3" diff --git a/tutorials/run-embeddings-with-max-serve/src/embeddings/__init__.py b/tutorials/run-embeddings-with-max-serve/src/embeddings/__init__.py new file mode 100644 index 0000000000..75c4f824f2 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/src/embeddings/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/run-embeddings-with-max-serve/src/embeddings/kb_system.py b/tutorials/run-embeddings-with-max-serve/src/embeddings/kb_system.py new file mode 100644 index 0000000000..5363aec1d1 --- /dev/null +++ b/tutorials/run-embeddings-with-max-serve/src/embeddings/kb_system.py @@ -0,0 +1,196 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import logging +from functools import lru_cache +from typing import Dict, List, Tuple + +import numpy as np +import requests +from sklearn.cluster import KMeans +from sklearn.metrics.pairwise import cosine_similarity + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + + +class SmartKnowledgeBase: + def __init__(self, endpoint: str = "http://localhost:8000/v1/embeddings"): + self.endpoint = endpoint + self.documents: List[str] = [] + self.doc_titles: List[str] = [] + self.embeddings: np.ndarray = None + self.clusters: Dict[int, List[int]] = {} + + def _get_embedding( + self, texts: List[str], max_retries: int = 3 + ) -> np.ndarray: + """Get embeddings with retry logic.""" + for attempt in range(max_retries): + try: + response = requests.post( + self.endpoint, + headers={"Content-Type": "application/json"}, + json={ + "input": texts, + "model": "sentence-transformers/all-mpnet-base-v2", + }, + timeout=5, + ).json() + return np.array( + [item["embedding"] for item in response["data"]] + ) + except Exception as e: + if attempt == max_retries - 1: + raise Exception( + f"Failed to get embeddings after {max_retries} attempts: {e}" + ) + logger.warning(f"Attempt {attempt + 1} failed, retrying...") + + @lru_cache(maxsize=1000) + def _get_embedding_cached(self, text: str) -> np.ndarray: + """Cached version for single text embedding.""" + return self._get_embedding([text])[0] + + def add_document(self, title: str, content: str): + """Add a single document with title.""" + self.doc_titles.append(title) + self.documents.append(content) + + # Update embeddings + if len(self.documents) == 1: + self.embeddings = self._get_embedding([content]) + else: + self.embeddings = np.vstack( + [self.embeddings, self._get_embedding([content])] + ) + + # Recluster if we have enough documents + if len(self.documents) >= 3: + self._cluster_documents() + + def _cluster_documents(self, n_clusters: int = None): + """Cluster documents into topics.""" + if n_clusters is None: + n_clusters = max(2, len(self.documents) // 5) + + n_clusters = min(n_clusters, len(self.documents)) + kmeans = KMeans(n_clusters=n_clusters, random_state=42).fit( + self.embeddings + ) + + self.clusters = {} + for i in range(n_clusters): + self.clusters[i] = np.where(kmeans.labels_ == i)[0].tolist() + + def search( + self, query: str, top_k: int = 3 + ) -> List[Tuple[str, str, float]]: + """Find documents most similar to the query.""" + query_embedding = self._get_embedding_cached(query) + similarities = cosine_similarity([query_embedding], self.embeddings)[0] + top_indices = np.argsort(similarities)[-top_k:][::-1] + return [ + (self.doc_titles[i], self.documents[i], similarities[i]) + for i in top_indices + ] + + def get_topic_documents(self, topic_id: int) -> List[Tuple[str, str]]: + """Get all documents in a topic cluster.""" + return [ + (self.doc_titles[i], self.documents[i]) + for i in self.clusters.get(topic_id, []) + ] + + def suggest_topics( + self, query: str, top_k: int = 2 + ) -> List[Tuple[int, float]]: + query_embedding = self._get_embedding_cached(query) + topic_similarities = [] + + for topic_id, doc_indices in self.clusters.items(): + topic_embeddings = self.embeddings[doc_indices] + similarity = cosine_similarity( + [query_embedding], topic_embeddings + ).max() + topic_similarities.append((topic_id, similarity)) # Remove [0] + + return sorted(topic_similarities, key=lambda x: x[1], reverse=True)[ + :top_k + ] + + +# Example usage +if __name__ == "__main__": + # Initialize knowledge base + kb = SmartKnowledgeBase() + + # Add technical documentation + kb.add_document( + "Password Reset Guide", + "To reset your password: 1. Click 'Forgot Password' 2. Enter your email " + "3. Follow the reset link 4. Create a new password meeting security requirements", + ) + + kb.add_document( + "Account Security", + "Secure your account by enabling 2FA, using a strong password, and regularly " + "monitoring account activity. Enable login notifications for suspicious activity.", + ) + + kb.add_document( + "Billing Overview", + "Your billing cycle starts on the 1st of each month. View charges, update " + "payment methods, and download invoices from the Billing Dashboard.", + ) + + kb.add_document( + "Payment Methods", + "We accept credit cards, PayPal, and bank transfers. Update payment methods " + "in Billing Settings. New payment methods are verified with a $1 hold.", + ) + + kb.add_document( + "Installation Guide", + "Install by downloading the appropriate package for your OS. Run with admin " + "privileges. Follow prompts to select installation directory and components.", + ) + + kb.add_document( + "System Requirements", + "Minimum: 8GB RAM, 2GB storage, Windows 10/macOS 11+. Recommended: 16GB RAM, " + "4GB storage, SSD, modern multi-core processor for optimal performance.", + ) + + # Example 1: Search for password-related help + print("\nSearching for password help:") + results = kb.search("How do I change my password?") + for title, content, score in results: + print(f"\nTitle: {title}") + print(f"Relevance: {score:.2f}") + print(f"Content: {content[:100]}...") + + # Example 2: Get topic suggestions + print("\nGetting topics for billing query:") + query = "Where can I update my credit card?" + topics = kb.suggest_topics(query) + for topic_id, relevance in topics: + print(f"\nTopic {topic_id} (Relevance: {relevance:.2f}):") + for title, content in kb.get_topic_documents(topic_id): + print(f"- {title}: {content[:50]}...") + + # Example 3: Get all documents in a topic + print("\nAll documents in Topic 0:") + for title, content in kb.get_topic_documents(0): + print(f"\nTitle: {title}") + print(f"Content: {content[:100]}...") diff --git a/tutorials/run-onnx-with-python/.gitignore b/tutorials/run-onnx-with-python/.gitignore new file mode 100644 index 0000000000..bf7158d955 --- /dev/null +++ b/tutorials/run-onnx-with-python/.gitignore @@ -0,0 +1,2 @@ +.magic +resnet50.onnx diff --git a/tutorials/run-onnx-with-python/README.md b/tutorials/run-onnx-with-python/README.md new file mode 100644 index 0000000000..a4503b0232 --- /dev/null +++ b/tutorials/run-onnx-with-python/README.md @@ -0,0 +1,21 @@ +# Tutorial: Run an ONNX model with Python + +This is the finished project for the [Run an ONNX model with +Python](https://docs.modular.com/max/tutorials/run-onnx-with-python) tutorial. + +Please refer to that page for more information. + +If you just want to run this code, use these commands (first [install +magic](https://docs.modular.com/magic/#install-magic)): + +```sh +git clone https://github.com/modular/max.git + +cd max/tutorials/run-onnx-with-python + +magic shell + +python3 download-model.py + +python3 run.py +``` diff --git a/tutorials/run-onnx-with-python/download-model.py b/tutorials/run-onnx-with-python/download-model.py new file mode 100644 index 0000000000..286369fc46 --- /dev/null +++ b/tutorials/run-onnx-with-python/download-model.py @@ -0,0 +1,47 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import torch +from torch.onnx import export +from transformers import ResNetForImageClassification + +# The HuggingFace model name and exported file name +HF_MODEL_NAME = "microsoft/resnet-50" +MODEL_PATH = "resnet50.onnx" + + +def main(): + # Load the ResNet model from HuggingFace in evaluation mode + model = ResNetForImageClassification.from_pretrained(HF_MODEL_NAME) + model.eval() + + # Create random input for tracing, then export the model to ONNX + dummy_input = torch.randn(1, 3, 224, 224) + export( + model, + dummy_input, + MODEL_PATH, + opset_version=11, + input_names=["pixel_values"], + output_names=["output"], + dynamic_axes={ + "pixel_values": {0: "batch_size"}, + "output": {0: "batch_size"}, + }, + ) + + print(f"Model saved as {MODEL_PATH}") + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-onnx-with-python/pyproject.toml b/tutorials/run-onnx-with-python/pyproject.toml new file mode 100644 index 0000000000..b754655b7f --- /dev/null +++ b/tutorials/run-onnx-with-python/pyproject.toml @@ -0,0 +1,36 @@ +[project] +dependencies = [] +description = "Tutorial: Run an ONNX model with Python" +name = "onnx-tutorial" +requires-python = ">=3.9,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["linux-64", "osx-arm64"] + +[tool.pixi.pypi-dependencies] +onnx_tutorial = { path = ".", editable = true } + +[tool.pixi.dependencies] +max = "~=24.6" +pytorch = "==2.4.0" +numpy = "<2.0" +onnx = "==1.16.0" +transformers = "==4.40.1" +datasets = "==2.18" +pillow = "==10.3.0" +libjpeg-turbo = { version = "==3.0.0", channel = "conda-forge" } + +[tool.pixi.feature.test.tasks] +test = "python3 download-model.py && python3 run.py" + +[tool.pixi.environments] +test = { features = ["test"] } + +[tool.pixi.feature.test.dependencies] +python-dateutil = "==2.9.0" diff --git a/tutorials/run-onnx-with-python/run.py b/tutorials/run-onnx-with-python/run.py new file mode 100644 index 0000000000..ef84a1b096 --- /dev/null +++ b/tutorials/run-onnx-with-python/run.py @@ -0,0 +1,50 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +import numpy as np +from datasets import load_dataset +from max import engine +from transformers import AutoImageProcessor, AutoModelForImageClassification + +# The HuggingFace model name and exported file name +HF_MODEL_NAME = "microsoft/resnet-50" +MODEL_PATH = "resnet50.onnx" + + +def main(): + dataset = load_dataset("huggingface/cats-image", trust_remote_code=True) + image = dataset["test"]["image"][0] + # optionally, save the image to see it yourself: + # image.save("cat.png") + + image_processor = AutoImageProcessor.from_pretrained(HF_MODEL_NAME) + inputs = image_processor(image, return_tensors="np") + + print("Keys:", inputs.keys()) + print("Shape:", inputs["pixel_values"].shape) + + session = engine.InferenceSession() + model = session.load(MODEL_PATH) + outputs = model.execute_legacy(**inputs) + + print("Output shape:", outputs["output"].shape) + + predicted_label = np.argmax(outputs["output"], axis=-1)[0] + hf_model = AutoModelForImageClassification.from_pretrained(HF_MODEL_NAME) + predicted_class = hf_model.config.id2label[predicted_label] + + print(f"Prediction: {predicted_class}") + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-onnx-with-python/src/onnx_tutorial/__init__.py b/tutorials/run-onnx-with-python/src/onnx_tutorial/__init__.py new file mode 100644 index 0000000000..1d49ac09ac --- /dev/null +++ b/tutorials/run-onnx-with-python/src/onnx_tutorial/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # diff --git a/tutorials/run-torchscript-with-python/.gitignore b/tutorials/run-torchscript-with-python/.gitignore new file mode 100644 index 0000000000..5254ad982c --- /dev/null +++ b/tutorials/run-torchscript-with-python/.gitignore @@ -0,0 +1,2 @@ +.magic +roberta.torchscript diff --git a/tutorials/run-torchscript-with-python/README.md b/tutorials/run-torchscript-with-python/README.md new file mode 100644 index 0000000000..639dc85912 --- /dev/null +++ b/tutorials/run-torchscript-with-python/README.md @@ -0,0 +1,22 @@ +# Tutorial: Run a TorchScript model with Python + +This is the finished project for the [Run a TorchScript model with +Python](https://docs.modular.com/max/tutorials/run-torchscript-with-python) +tutorial. + +Please refer to that page for more information. + +If you just want to run this code, use these commands (first [install +magic](https://docs.modular.com/magic/#install-magic)): + +```sh +git clone https://github.com/modular/max.git + +cd max/tutorials/run-torchscript-with-python + +magic shell + +python3 download-model.py + +python3 run.py +``` diff --git a/tutorials/run-torchscript-with-python/download-model.py b/tutorials/run-torchscript-with-python/download-model.py new file mode 100644 index 0000000000..bcd91ba410 --- /dev/null +++ b/tutorials/run-torchscript-with-python/download-model.py @@ -0,0 +1,43 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from pathlib import Path + +import torch +from transformers import AutoModelForSequenceClassification + +# The HuggingFace model name and exported file name +HF_MODEL_NAME = "cardiffnlp/twitter-roberta-base-emotion-multilabel-latest" +MODEL_PATH = Path("roberta.torchscript") + + +def main(): + # Load the ResNet model from HuggingFace in evaluation mode + hf_model = AutoModelForSequenceClassification.from_pretrained(HF_MODEL_NAME) + + # Convert the model to TorchScript + batch = 1 + seqlen = 128 + input_spec = { + "input_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seqlen), dtype=torch.int64), + } + with torch.no_grad(): + traced_model = torch.jit.trace( + hf_model, example_kwarg_inputs=dict(input_spec), strict=False + ) + torch.jit.save(traced_model, MODEL_PATH) + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-torchscript-with-python/pyproject.toml b/tutorials/run-torchscript-with-python/pyproject.toml new file mode 100644 index 0000000000..f4b1f5772e --- /dev/null +++ b/tutorials/run-torchscript-with-python/pyproject.toml @@ -0,0 +1,31 @@ +[project] +dependencies = [] +description = "Tutorial: Run a TorchScript model with Python" +name = "torchscript-tutorial" +requires-python = ">=3.11,<3.13" +version = "0.1.0" + +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling"] + +[tool.pixi.project] +channels = ["pytorch", "conda-forge", "https://conda.modular.com/max-nightly/"] +platforms = ["linux-64", "osx-arm64"] + +[tool.pixi.pypi-dependencies] +torchscript_tutorial = { path = ".", editable = true } + +[tool.pixi.dependencies] +max = "~=24.6" +pytorch = "==2.4.0" +transformers = "==4.40.1" + +[tool.pixi.feature.test.tasks] +test = "python3 download-model.py && python3 run.py" + +[tool.pixi.environments] +test = { features = ["test"] } + +[tool.pixi.feature.test.dependencies] +python-dateutil = "==2.9.0" diff --git a/tutorials/run-torchscript-with-python/run.py b/tutorials/run-torchscript-with-python/run.py new file mode 100644 index 0000000000..0a9c75b4d3 --- /dev/null +++ b/tutorials/run-torchscript-with-python/run.py @@ -0,0 +1,76 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== # + +from pathlib import Path + +import torch +from max import engine +from max.dtype import DType +from transformers import AutoModelForSequenceClassification, AutoTokenizer + +# The HuggingFace model name and TorchScript file name +HF_MODEL_NAME = "cardiffnlp/twitter-roberta-base-emotion-multilabel-latest" +MODEL_PATH = Path("roberta.torchscript") + + +def main(): + batch = 1 + seqlen = 128 + input_spec = { + "input_ids": torch.zeros((batch, seqlen), dtype=torch.int64), + "attention_mask": torch.zeros((batch, seqlen), dtype=torch.int64), + } + + # We use the same `input_spec` that we used to trace the model (download-model.py) + input_spec_list = [ + engine.TorchInputSpec(shape=tensor.size(), dtype=DType.int64) + for tensor in input_spec.values() + ] + + session = engine.InferenceSession() + model = session.load(MODEL_PATH, input_specs=input_spec_list) + + for tensor in model.input_metadata: + print( + f"name: {tensor.name}, shape: {tensor.shape}, dtype: {tensor.dtype}" + ) + + # The model input + text_input = ( + "There are many exciting developments in the field of AI" + " Infrastructure!" + ) + + # Tokenize the input + tokenizer = AutoTokenizer.from_pretrained(HF_MODEL_NAME) + inputs = tokenizer( + text_input, + return_tensors="pt", + padding="max_length", + truncation=True, + max_length=seqlen, + ) + print(inputs) + + outputs = model.execute_legacy(**inputs) + + # Extract class prediction from output + hf_model = AutoModelForSequenceClassification.from_pretrained(HF_MODEL_NAME) + predicted_class_id = outputs["result0"]["logits"].argmax(axis=-1)[0] + classification = hf_model.config.id2label[predicted_class_id] + + print(f"The sentiment is: {classification}") + + +if __name__ == "__main__": + main() diff --git a/tutorials/run-torchscript-with-python/src/torchscript_tutorial/__init__.py b/tutorials/run-torchscript-with-python/src/torchscript_tutorial/__init__.py new file mode 100644 index 0000000000..1d49ac09ac --- /dev/null +++ b/tutorials/run-torchscript-with-python/src/torchscript_tutorial/__init__.py @@ -0,0 +1,12 @@ +# ===----------------------------------------------------------------------=== # +# Copyright (c) 2025, Modular Inc. All rights reserved. +# +# Licensed under the Apache License v2.0 with LLVM Exceptions: +# https://llvm.org/LICENSE.txt +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ===----------------------------------------------------------------------=== #