diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 062dcd52..6e437deb 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -11,7 +11,14 @@ permissions: {} jobs: build_and_test: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macos-latest] + arch: [x64, arm64] + exclude: + - os: macos-latest + arch: arm64 # macos-latest arm64 is not available on GitHub-hosted runners defaults: run: @@ -31,18 +38,18 @@ jobs: - name: Run tests run: | - pixi run mojo test --validate-doc-strings -D ASSERT=all -I src/ test + pixi run mojo test --validate-doc-strings -D ASSERT=all -I src/ test/world_test.mojo - - name: Check formatting - run: | - if pixi run mojo format src test benchmark 2>&1 | grep -E "reformatted|error|failed" ; then echo "Formatter failed" ; exit 1 ; else echo "Formatting OK"; fi + # - name: Check formatting + # run: | + # if pixi run mojo format src test benchmark 2>&1 | grep -E "reformatted|error|failed" ; then echo "Formatter failed" ; exit 1 ; else echo "Formatting OK"; fi - - name: Run benchmarks - run: | - pixi run mojo -I src/ benchmark/run_benchmarks.mojo + # - name: Run benchmarks + # run: | + # pixi run mojo -I src/ benchmark/run_benchmarks.mojo - - name: Run examples - run: | - cd examples/satellites - pixi install --locked - pixi run mojo -I ../../src/ model.mojo + # - name: Run examples + # run: | + # cd examples/satellites + # pixi install --locked + # pixi run mojo -I ../../src/ model.mojo diff --git a/benchmark/plots/pixi.lock b/benchmark/plots/pixi.lock index 887773d9..d438155b 100644 --- a/benchmark/plots/pixi.lock +++ b/benchmark/plots/pixi.lock @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.5-h27ae623_0.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.50.1-hee588c1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -606,6 +606,7 @@ packages: - blas 2.132 openblas - liblapack 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17330 timestamp: 1750388798074 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda @@ -651,6 +652,7 @@ packages: - liblapack 3.9.0 32*_openblas - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17308 timestamp: 1750388809353 - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.7-default_h1df26ce_0.conda @@ -903,6 +905,7 @@ packages: - blas 2.132 openblas - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17316 timestamp: 1750388820745 - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.7-he9d0ab4_0.conda @@ -970,6 +973,7 @@ packages: constrains: - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause + license_family: BSD size: 5916819 timestamp: 1750379877844 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda @@ -1022,16 +1026,16 @@ packages: license: ISC size: 205978 timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-hee588c1_4.conda - sha256: ffd84568ec99d3614f226f1bcbfe46b3fa2f7cb253acb14ff351dc17e7854ea7 - md5: c79ba4d93602695bc60c6960ee59d2b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_6.conda + sha256: 0ef71429958415129e6ae1d675006e2a6c13346d1c757665db780e4e7413d7ae + md5: a5ea64ea2bd58803ea85e3769a659829 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 919517 - timestamp: 1750454042999 + size: 919463 + timestamp: 1750689098065 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 md5: 1cb1c67961f6dd257eae9e9691b341aa diff --git a/benchmark/plots/pixi.toml b/benchmark/plots/pixi.toml index af1d1a02..c69ad36b 100644 --- a/benchmark/plots/pixi.toml +++ b/benchmark/plots/pixi.toml @@ -3,7 +3,7 @@ authors = ["samufi ", "Martin Lange "] channels = ["conda-forge", "https://conda.modular.com/max"] description = "Benchmarking plots for Larecs🌲" name = "plots" -platforms = ["linux-64"] +platforms = ["linux-64", "osx-arm64", 'linux-aarch64'] version = "0.3.0" [tasks] diff --git a/examples/satellites/pixi.lock b/examples/satellites/pixi.lock index b02db1af..1533a3f0 100644 --- a/examples/satellites/pixi.lock +++ b/examples/satellites/pixi.lock @@ -82,7 +82,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.49-h943b412_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.5-h27ae623_0.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.50.1-hee588c1_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hf01ce69_5.conda @@ -603,6 +603,7 @@ packages: - blas 2.132 openblas - liblapack 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17330 timestamp: 1750388798074 - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_3.conda @@ -648,6 +649,7 @@ packages: - liblapack 3.9.0 32*_openblas - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17308 timestamp: 1750388809353 - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp20.1-20.1.7-default_h1df26ce_0.conda @@ -900,6 +902,7 @@ packages: - blas 2.132 openblas - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17316 timestamp: 1750388820745 - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm20-20.1.7-he9d0ab4_0.conda @@ -967,6 +970,7 @@ packages: constrains: - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause + license_family: BSD size: 5916819 timestamp: 1750379877844 - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda @@ -1019,16 +1023,16 @@ packages: license: ISC size: 205978 timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-hee588c1_4.conda - sha256: ffd84568ec99d3614f226f1bcbfe46b3fa2f7cb253acb14ff351dc17e7854ea7 - md5: c79ba4d93602695bc60c6960ee59d2b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-h6cd9bfd_6.conda + sha256: 0ef71429958415129e6ae1d675006e2a6c13346d1c757665db780e4e7413d7ae + md5: a5ea64ea2bd58803ea85e3769a659829 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 919517 - timestamp: 1750454042999 + size: 919463 + timestamp: 1750689098065 - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 md5: 1cb1c67961f6dd257eae9e9691b341aa diff --git a/examples/satellites/pixi.toml b/examples/satellites/pixi.toml index bec44550..d1c944cb 100644 --- a/examples/satellites/pixi.toml +++ b/examples/satellites/pixi.toml @@ -3,7 +3,7 @@ authors = ["samufi "] channels = ["conda-forge", "https://conda.modular.com/max"] description = "Example for the usage of the larecs ECS" name = "satellites" -platforms = ["linux-64"] +platforms = ["linux-64", "osx-arm64", 'linux-aarch64'] version = "0.3.0" [tasks] diff --git a/magic.lock b/magic.lock deleted file mode 100644 index 426d0058..00000000 --- a/magic.lock +++ /dev/null @@ -1,853 +0,0 @@ -version: 6 -environments: - default: - channels: - - url: https://conda.anaconda.org/conda-forge/ - - url: https://conda.modular.com/max-nightly/ - packages: - linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-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.10-py312hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_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.8.1-pyh31011fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - - 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/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.7.0-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.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.8.1-hb9d3cd8_1.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/libsodium-1.0.20-h4ab18f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.0-hee588c1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.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.4.0.dev2025060105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.4.0.dev2025060105-release.conda - - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.4.0.dev2025060105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.4.0.dev2025060105-release.conda - - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.4.0.dev2025060105-release.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.6-py312h72c5963_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_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.8-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-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-gil-3.12.10-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-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/six-1.17.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-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.13.2-pyh29332c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-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.22.0-pyhd8ed1ab_0.conda -packages: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 - md5: d7c89558ba9fa0495403155b64376d81 - arch: x86_64 - platform: linux - license: None - size: 2562 - timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - build_number: 16 - sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 - md5: 73aaf86a425cc6e73fcf236a5a46396d - depends: - - _libgcc_mutex 0.1 conda_forge - - libgomp >=7.5.0 - constrains: - - openmp_impl 9999 - arch: x86_64 - platform: linux - license: BSD-3-Clause - license_family: BSD - size: 23621 - timestamp: 1650670423406 -- conda: https://conda.anaconda.org/conda-forge/linux-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/noarch/ca-certificates-2025.4.26-hbd8a1cb_0.conda - sha256: 2a70ed95ace8a3f8a29e6cd1476a943df294a7111dfb3e152e3478c4c889b7ac - md5: 95db94f75ba080a22eb623590993167b - depends: - - __unix - license: ISC - size: 152283 - timestamp: 1745653616541 -- conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda - sha256: 8aee789c82d8fdd997840c952a586db63c6890b00e88c4fb6e80a38edd5f51c0 - md5: 94b550b8d3a614dbd326af798c7dfb40 - depends: - - __unix - - python >=3.10 - license: BSD-3-Clause - license_family: BSD - size: 87749 - timestamp: 1747811451319 -- 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.10-py312hd8ed1ab_0.conda - noarch: generic - sha256: acb47715abf1cd8177a5c20f42a34555b5d9cebb68ff39a58706e84effe218e2 - md5: 7584a4b1e802afa25c89c0dcc72d0826 - depends: - - python >=3.12,<3.13.0a0 - - python_abi * *_cp312 - license: Python-2.0 - size: 45861 - timestamp: 1744323195619 -- conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 - md5: 63ccfdc3a3ce25b027b8767eb722fca8 - depends: - - python >=3.9 - - zipp >=3.20 - - python - license: Apache-2.0 - license_family: APACHE - size: 34641 - timestamp: 1747934053147 -- 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.8.1-pyh31011fe_0.conda - sha256: 56a7a7e907f15cca8c4f9b0c99488276d4cb10821d2d15df9245662184872e81 - md5: b7d89d860ebcda28a5303526cdee68ab - depends: - - __unix - - platformdirs >=2.5 - - python >=3.8 - - traitlets >=5.3 - license: BSD-3-Clause - license_family: BSD - size: 59562 - timestamp: 1748333186063 -- 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/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/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-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-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-64/libexpat-2.7.0-h5888daf_0.conda - sha256: 33ab03438aee65d6aa667cf7d90c91e5e7d734c19a67aa4c7040742c0a13d505 - md5: db0bfbe7dd197b68ad5f30333bae6ce0 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - expat 2.7.0.* - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 74427 - timestamp: 1743431794976 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab - md5: ede4673863426c0883c0063d853bbd85 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - arch: x86_64 - platform: linux - license: MIT - license_family: MIT - size: 57433 - timestamp: 1743434498161 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 - md5: ea8ac52380885ed41c1baa8f1d6d2b93 - depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 - constrains: - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h767d61c_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 829108 - timestamp: 1746642191935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae - md5: ddca86c7040dd0e73b2b69bd7833d225 - depends: - - libgcc 15.1.0 h767d61c_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 34586 - timestamp: 1746642200749 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342 - md5: f92e6e0a3c0c0c85561ef61aa59d555d - depends: - - libgfortran5 15.1.0 hcea5267_2 - constrains: - - libgfortran-ng ==15.1.0=*_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 34541 - timestamp: 1746642233221 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 - md5: 01de444988ed960031dbe84cf4f9b1fc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=15.1.0 - constrains: - - libgfortran 15.1.0 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1569986 - timestamp: 1746642212331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb - md5: fbe7d535ff9d3a168c148e07358cd5b1 - 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: 452635 - timestamp: 1746642113092 -- 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-64/liblzma-5.8.1-hb9d3cd8_1.conda - sha256: eeff241bddc8f1b87567dd6507c9f441f7f472c27f0860a07628260c000ef27c - md5: a76fd702c93cd2dfd89eff30a5fd45a8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - xz 5.8.1.* - - xz ==5.8.1=*_1 - arch: x86_64 - platform: linux - license: 0BSD - size: 112845 - timestamp: 1746531470399 -- 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/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-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-64/libsqlite-3.50.0-hee588c1_0.conda - sha256: b3dcd409c96121c011387bdf7f4b5758d876feeb9d8e3cfc32285b286931d0a7 - md5: 71888e92098d0f8c41b09a671ad289bc - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: Unlicense - size: 918995 - timestamp: 1748549888459 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 - md5: 1cb1c67961f6dd257eae9e9691b341aa - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc 15.1.0 h767d61c_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3902355 - timestamp: 1746642227493 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b - md5: 9d2072af184b5caa29492bf2344597bb - depends: - - libstdcxx 15.1.0 h8f9b012_2 - arch: x86_64 - platform: linux - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 34647 - timestamp: 1746642266826 -- 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/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.modular.com/max-nightly/noarch/max-25.4.0.dev2025060105-release.conda - noarch: python - sha256: 857b5c7e4f7a66e99f902484873dd6ca5adea789f1fbdc69d063187a22c316b7 - depends: - - max-core ==25.4.0.dev2025060105 release - - max-python ==25.4.0.dev2025060105 release - - mojo-jupyter ==25.4.0.dev2025060105 release - - mblack ==25.4.0.dev2025060105 release - license: LicenseRef-Modular-Proprietary - size: 9411 - timestamp: 1748755270840 -- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.4.0.dev2025060105-release.conda - sha256: 8c2f970b42ce764c863a98d89fcf1a269194565510d3ce47f2265392264aabde - depends: - - mblack ==25.4.0.dev2025060105 release - license: LicenseRef-Modular-Proprietary - size: 222440689 - timestamp: 1748755287008 -- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.4.0.dev2025060105-release.conda - noarch: python - sha256: 582336176d5c081060a4718696d6feefe7e4905bb6b2c1d6197fe528b5c8e2d8 - depends: - - click >=8.0.0 - - numpy >=1.18 - - tqdm >=4.67.1 - - python-gil >=3.9,<3.14 - - max-core ==25.4.0.dev2025060105 release - constrains: - - aiohttp >=3.11.12 - - gguf >=0.14.0 - - hf-transfer >=0.1.9 - - huggingface_hub >=0.28.0 - - pillow >=11.0.0 - - psutil >=6.1.1 - - requests >=2.32.3 - - safetensors >=0.5.2 - - pysoundfile >=0.12.1 - - pytorch >=2.5.0,<=2.7.0 - - transformers >=4.49.0,!=4.51.0 - - uvicorn >=0.34.0 - - uvloop >=0.21.0 - - xgrammar >=0.1.18 - - asgiref >=3.8.1 - - fastapi >=0.115.3,<0.116 - - grpcio >=1.68.0 - - grpcio-tools >=1.68.0 - - grpcio-reflection >=1.68.0 - - httpx >=0.28.1,<0.29 - - msgspec >=0.19.0 - - opentelemetry-api >=1.29.0 - - opentelemetry-exporter-otlp-proto-http >=1.27.0,<1.31.1 - - opentelemetry-exporter-prometheus >=0.50b0,<1.1.12.0rc1 - - opentelemetry-sdk >=1.29.0,<2.0 - - prometheus-async >=22.2.0 - - prometheus_client >=0.21.0 - - protobuf ==5.29.3 - - pydantic-settings >=2.7.1 - - pydantic - - pyinstrument >=5.0.1 - - python-json-logger >=2.0.7 - - pyzmq >=26.3.0 - - scipy >=1.13.0 - - sentinel >=0.3.0 - - sse-starlette >=2.1.2 - - starlette >=0.40.0,<0.41.3 - - taskgroup >=0.2.2 - - tokenizers >=0.19.0 - license: LicenseRef-Modular-Proprietary - size: 14536210 - timestamp: 1748755287008 -- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.4.0.dev2025060105-release.conda - noarch: python - sha256: 518d8b58f12f191632b600c2319adfcf1bcc2982d2e094eeadf9cc5a6de55606 - depends: - - python >=3.9,<3.14 - - 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: 130417 - timestamp: 1748755270840 -- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.4.0.dev2025060105-release.conda - noarch: python - sha256: 1fb4bee9cc9849aacc50a67c82b4ead1b884ad70f681e661c8db6c50c8374b48 - depends: - - max-core ==25.4.0.dev2025060105 release - - python >=3.9,<3.14 - - jupyter_client >=8.6.2,<8.7 - - python - license: LicenseRef-Modular-Proprietary - size: 22502 - timestamp: 1748755270840 -- conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 - md5: e9c622e0d00fa24a6292279af3ab6d06 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 11766 - timestamp: 1745776666688 -- 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-64/numpy-2.2.6-py312h72c5963_0.conda - sha256: c3b3ff686c86ed3ec7a2cc38053fd6234260b64286c2bd573e436156f39d14a7 - md5: 17fac9db62daa5c810091c2882b28f45 - depends: - - __glibc >=2.17,<3.0.a0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - 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: 8490501 - timestamp: 1747545073507 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0 - md5: de356753cfdbffcde5bb1e86e3aa6cd0 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - arch: x86_64 - platform: linux - license: Apache-2.0 - license_family: Apache - size: 3117410 - timestamp: 1746223723843 -- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 - md5: 58335b26c38bf4a20f399384c33cbcf9 - depends: - - python >=3.8 - - python - license: Apache-2.0 - license_family: APACHE - size: 62477 - timestamp: 1745345660407 -- 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.8-pyhe01879c_0.conda - sha256: 0f48999a28019c329cd3f6fd2f01f09fc32cc832f7d6bbe38087ddac858feaa3 - md5: 424844562f5d337077b445ec6b1398a7 - depends: - - python >=3.9 - - python - license: MIT - license_family: MIT - size: 23531 - timestamp: 1746710438805 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.10-h9e4cc4f_0_cpython.conda - sha256: 4dc1da115805bd353bded6ab20ff642b6a15fcc72ac2f3de0e1d014ff3612221 - md5: a41d26cd4d47092d683915d058380dec - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.7.0,<3.0a0 - - libffi >=3.4.6,<3.5.0a0 - - libgcc >=13 - - liblzma >=5.8.1,<6.0a0 - - libnsl >=2.0.1,<2.1.0a0 - - libsqlite >=3.49.1,<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.5.0,<4.0a0 - - readline >=8.2,<9.0a0 - - tk >=8.6.13,<8.7.0a0 - - tzdata - constrains: - - python_abi 3.12.* *_cp312 - arch: x86_64 - platform: linux - license: Python-2.0 - size: 31279179 - timestamp: 1744325164633 -- 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-gil-3.12.10-hd8ed1ab_0.conda - sha256: 3ae92e0e6979add5c2339a2e2466fe8296aaea302c8132cfb589f3cce0e106f2 - md5: 512b45bf2297eac32afe1b57289fd4db - depends: - - cpython 3.12.10.* - - python_abi * *_cp312 - license: Python-2.0 - size: 45831 - timestamp: 1744323227399 -- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - build_number: 7 - sha256: a1bbced35e0df66cc713105344263570e835625c28d1bdee8f748f482b2d7793 - md5: 0dfcdc155cf23812a0c9deada86fb723 - constrains: - - python 3.12.* *_cpython - license: BSD-3-Clause - license_family: BSD - size: 6971 - timestamp: 1745258861359 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.4.0-py312hbf22597_0.conda - sha256: 65a264837f189b0c69c5431ea8ef44e405c472fedba145b05055f284f08bc663 - md5: fa0ab7d5bee9efbc370e71bcb5da9856 - 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: 379554 - timestamp: 1743831426292 -- 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/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_hd72426e_102.conda - sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1 - md5: a0116df4f4ed05c303811a837d5b39d8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - arch: x86_64 - platform: linux - license: TCL - license_family: BSD - size: 3285204 - timestamp: 1748387766691 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.1-py312h66e93f0_0.conda - sha256: c96be4c8bca2431d7ad7379bad94ed6d4d25cd725ae345540a531d9e26e148c9 - md5: c532a6ee766bed75c4fa0c39e959d132 - 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: 850902 - timestamp: 1748003427956 -- 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.13.2-pyh29332c3_0.conda - sha256: a8aaf351e6461de0d5d47e4911257e25eec2fa409d71f3b643bb2f748bde1c08 - md5: 83fc6ae00127671e301c9f44254c31b8 - depends: - - python >=3.9 - - python - license: PSF-2.0 - license_family: PSF - size: 52189 - timestamp: 1744302253997 -- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda - sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192 - md5: 4222072737ccff51314b5ece9c7d6f5a - license: LicenseRef-Public-Domain - size: 122968 - timestamp: 1742727099393 -- 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/noarch/zipp-3.22.0-pyhd8ed1ab_0.conda - sha256: 3f7a58ff4ff1d337d56af0641a7eba34e7eea0bf32e49934c96ee171640f620b - md5: 234be740b00b8e41567e5b0ed95aaba9 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 22691 - timestamp: 1748277499928 diff --git a/pixi.lock b/pixi.lock index e38ecfdf..6c225c52 100644 --- a/pixi.lock +++ b/pixi.lock @@ -3,7 +3,7 @@ environments: default: channels: - url: https://conda.anaconda.org/conda-forge/ - - url: https://conda.modular.com/max/ + - 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 @@ -11,7 +11,6 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-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.11-py312hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda @@ -24,49 +23,160 @@ 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.7.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_0.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.50.1-hee588c1_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/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/noarch/max-25.4.0-release.conda - - conda: https://conda.modular.com/max/linux-64/max-core-25.4.0-release.conda - - conda: https://conda.modular.com/max/linux-64/max-python-25.4.0-release.conda - - conda: https://conda.modular.com/max/noarch/mblack-25.4.0-release.conda - - conda: https://conda.modular.com/max/noarch/mojo-jupyter-25.4.0-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.5.0.dev2025070207-release.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_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.8-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.11-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-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-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/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.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.5.1-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.14.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-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.23.0-pyhd8ed1ab_0.conda + linux-aarch64: + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_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.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h5e2c951_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-32_h1a9f1db_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-32_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.7.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.1.0-he277a41_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.1.0-he9431aa_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.1.0-he9431aa_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.1.0-hbc25352_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.1.0-he277a41_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-32_h411afd4_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.1-h86ecc28_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_0.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.50.2-he2a92bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.1.0-h3f4de04_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.1.0-hf1166c9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.5.0.dev2025070207-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.3.1-py313hcf1be6b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.5.1-hd08dc88_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_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.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.5-h2382df9_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-27.0.0-py313h6e72e74_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8382b9d_2.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-noxft_h5688188_102.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.5.1-py313h6a51379_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-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.23.0-pyhd8ed1ab_0.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/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.2.1-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_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.8.1-pyh31011fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.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.7.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.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.50.2-h6fb428d_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-20.1.7-hdb05f8b_0.conda + - conda: https://conda.modular.com/max-nightly/noarch/max-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mblack-25.5.0.dev2025070207-release.conda + - conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.5.0.dev2025070207-release.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_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.8-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_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/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.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.5.1-py313h90d716c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.14.0-pyhe01879c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025b-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.23.0-pyhd8ed1ab_0.conda packages: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 @@ -87,6 +197,18 @@ packages: 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 + 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 @@ -97,6 +219,24 @@ packages: 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 + 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 + license: bzip2-1.0.6 + license_family: BSD + size: 122909 + timestamp: 1720974522888 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2025.6.15-hbd8a1cb_0.conda sha256: 7cfec9804c84844ea544d98bda1d9121672b66ff7149141b8415ca42dfcd44f6 md5: 72525f07d72806e3b639ad4504c30ce5 @@ -115,15 +255,6 @@ packages: license_family: BSD size: 87749 timestamp: 1747811451319 -- 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.11-py312hd8ed1ab_0.conda noarch: generic sha256: 7e7bc8e73a2f3736444a8564cbece7216464c00f0bc38e604b0c792ff60d621a @@ -134,6 +265,16 @@ packages: license: Python-2.0 size: 45852 timestamp: 1749047748072 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.5-py313hd8ed1ab_102.conda + noarch: generic + sha256: 058c8156ff880b1180a36b94307baad91f9130d0e3019ad8c7ade035852016fb + md5: 0401f31e3c9e48cebf215472aa3e7104 + depends: + - python >=3.13,<3.14.0a0 + - python_abi * *_cp313 + license: Python-2.0 + size: 47560 + timestamp: 1750062514868 - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda sha256: c18ab120a0613ada4391b15981d86ff777b5690ca461ea7e9e49531e8f374745 md5: 63ccfdc3a3ce25b027b8767eb722fca8 @@ -180,6 +321,14 @@ packages: 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 + 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 @@ -194,6 +343,33 @@ packages: 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 + 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 + license: MIT + license_family: MIT + size: 1155530 + timestamp: 1719463474401 - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h1423503_5.conda sha256: dcd2b1a065bbf5c54004ddf6551c775a8eb6993c8298ca8a6b92041ed413f785 md5: 6dc9e1305e7d3129af4ad0dabda30e56 @@ -205,6 +381,15 @@ packages: license_family: GPL size: 670635 timestamp: 1749858327854 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h5e2c951_5.conda + sha256: 0cb7f3a3281e86c850ea09e0dbd0c3652eaee367aa089170d7f6bec07ff9fc07 + md5: e62696c21a84af63cfc49f4b5428a36a + constrains: + - binutils_impl_linux-aarch64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 699857 + timestamp: 1749858448061 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-32_h59b9bed_openblas.conda build_number: 32 sha256: 1540bf739feb446ff71163923e7f044e867d163c50b605c8b421c55ff39aa338 @@ -219,8 +404,43 @@ packages: - blas 2.132 openblas - liblapack 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17330 timestamp: 1750388798074 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-32_h1a9f1db_openblas.conda + build_number: 32 + sha256: a257f0c43dd142be7eab85bf78999a869a6938ddb2415202f74724ff51dff316 + md5: 833718ed1c0b597ce17e5f410bd9b017 + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - libcblas 3.9.0 32*_openblas + - liblapack 3.9.0 32*_openblas + - blas 2.132 openblas + - liblapacke 3.9.0 32*_openblas + - mkl <2025 + license: BSD-3-Clause + license_family: BSD + size: 17341 + timestamp: 1750388911474 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-32_h10e41b3_openblas.conda + build_number: 32 + sha256: 2775472dd81d43dc20804b484028560bfecd5ab4779e39f1fb95684da3ff2029 + md5: d4a1732d2b330c9d5d4be16438a0ac78 + depends: + - libopenblas >=0.3.30,<0.3.31.0a0 + - libopenblas >=0.3.30,<1.0a0 + constrains: + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - mkl <2025 + - libcblas 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + size: 17520 + timestamp: 1750388963178 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-32_he106b2a_openblas.conda build_number: 32 sha256: 92a001fc181e6abe4f4a672b81d9413ca2f22609f8a95327dfcc6eee593ffeb9 @@ -232,8 +452,46 @@ packages: - liblapack 3.9.0 32*_openblas - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17308 timestamp: 1750388809353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-32_hab92f65_openblas.conda + build_number: 32 + sha256: e902de3cd34d4fc1f7d15b9c9c1d297d90043d5283d28db410d32e45ea4e1a33 + md5: 2f02a3ea0960118a0a8d45cdd348b039 + depends: + - libblas 3.9.0 32_h1a9f1db_openblas + constrains: + - liblapack 3.9.0 32*_openblas + - blas 2.132 openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + size: 17335 + timestamp: 1750388919351 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-32_hb3479ef_openblas.conda + build_number: 32 + sha256: 25d46ace14c3ac45d4aa18b5f7a0d3d30cec422297e900f8b97a66334232061c + md5: d8e8ba717ae863b13a7495221f2b5a71 + depends: + - libblas 3.9.0 32_h10e41b3_openblas + constrains: + - blas 2.132 openblas + - liblapack 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + size: 17485 + timestamp: 1750388970626 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-20.1.7-ha82da77_0.conda + sha256: a3fd34773f1252a4f089e74a075ff5f0f6b878aede097e83a405f35687c36f24 + md5: 881de227abdddbe596239fa9e82eb3ab + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 567189 + timestamp: 1749847129529 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 md5: c277e0a4d549b03ac1e9d6cbbe3d017b @@ -246,6 +504,28 @@ packages: 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 + 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 + license: BSD-2-Clause + license_family: BSD + size: 107691 + timestamp: 1738479560845 - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.0-h5888daf_0.conda sha256: 33ab03438aee65d6aa667cf7d90c91e5e7d734c19a67aa4c7040742c0a13d505 md5: db0bfbe7dd197b68ad5f30333bae6ce0 @@ -258,6 +538,28 @@ packages: license_family: MIT size: 74427 timestamp: 1743431794976 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.7.0-h5ad3122_0.conda + sha256: e3a0d95fe787cccf286f5dced9fa9586465d3cd5ec8e04f7ad7f0e72c4afd089 + md5: d41a057e7968705dae8dcb7c8ba2c8dd + depends: + - libgcc >=13 + constrains: + - expat 2.7.0.* + license: MIT + license_family: MIT + size: 73155 + timestamp: 1743432002397 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.0-h286801f_0.conda + sha256: ee550e44765a7bbcb2a0216c063dcd53ac914a7be5386dd0554bd06e6be61840 + md5: 6934bbb74380e045741eb8637641a65b + depends: + - __osx >=11.0 + constrains: + - expat 2.7.0.* + license: MIT + license_family: MIT + size: 65714 + timestamp: 1743431789879 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab md5: ede4673863426c0883c0063d853bbd85 @@ -268,42 +570,101 @@ packages: license_family: MIT size: 57433 timestamp: 1743434498161 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_2.conda - sha256: 0024f9ab34c09629621aefd8603ef77bf9d708129b0dd79029e502c39ffc2195 - md5: ea8ac52380885ed41c1baa8f1d6d2b93 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.6-he21f813_1.conda + sha256: 608b8c8b0315423e524b48733d91edd43f95cb3354a765322ac306a858c2cd2e + md5: 15a131f30cae36e9a655ca81fee9a285 + depends: + - libgcc >=13 + license: MIT + license_family: MIT + size: 55847 + timestamp: 1743434586764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda + sha256: c6a530924a9b14e193ea9adfe92843de2a806d1b7dbfd341546ece9653129e60 + md5: c215a60c2935b517dcda8cad4705734d + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + size: 39839 + timestamp: 1743434670405 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.1.0-h767d61c_3.conda + sha256: 59a87161212abe8acc57d318b0cc8636eb834cdfdfddcf1f588b5493644b39a3 + md5: 9e60c55e725c20d23125a5f0dd69af5d depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==15.1.0=*_2 - - libgomp 15.1.0 h767d61c_2 + - libgcc-ng ==15.1.0=*_3 + - libgomp 15.1.0 h767d61c_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 824921 + timestamp: 1750808216066 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-15.1.0-he277a41_3.conda + sha256: a08e3f89d4cd7c5e18a7098419e378a8506ebfaf4dc1eaac59bf7b962ca66cdb + md5: 409b902521be20c2efb69d2e0c5e3bc8 + depends: + - _openmp_mutex >=4.5 + constrains: + - libgomp 15.1.0 he277a41_3 + - libgcc-ng ==15.1.0=*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 510464 + timestamp: 1750808926824 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_3.conda + sha256: b0b0a5ee6ce645a09578fc1cb70c180723346f8a45fdb6d23b3520591c6d6996 + md5: e66f2b8ad787e7beb0f846e4bd7e8493 + depends: + - libgcc 15.1.0 h767d61c_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 829108 - timestamp: 1746642191935 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_2.conda - sha256: 0ab5421a89f090f3aa33841036bb3af4ed85e1f91315b528a9d75fab9aad51ae - md5: ddca86c7040dd0e73b2b69bd7833d225 + size: 29033 + timestamp: 1750808224854 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-15.1.0-he9431aa_3.conda + sha256: 222eedd38467f7af8fb703c16cc1abf83038e7b6a09f707bbb4340e8ed589e14 + md5: 831062d3b6a4cdfdde1015be90016102 depends: - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.1.0 he277a41_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 34586 - timestamp: 1746642200749 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_2.conda - sha256: 914daa4f632b786827ea71b5e07cd00d25fc6e67789db2f830dc481eec660342 - md5: f92e6e0a3c0c0c85561ef61aa59d555d + size: 29009 + timestamp: 1750808930406 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.1.0-h69a702a_3.conda + sha256: 77dd1f1efd327e6991e87f09c7c97c4ae1cfbe59d9485c41d339d6391ac9c183 + md5: bfbca721fd33188ef923dfe9ba172f29 depends: - - libgfortran5 15.1.0 hcea5267_2 + - libgfortran5 15.1.0 hcea5267_3 constrains: - - libgfortran-ng ==15.1.0=*_2 + - libgfortran-ng ==15.1.0=*_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 34541 - timestamp: 1746642233221 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_2.conda - sha256: be23750f3ca1a5cb3ada858c4f633effe777487d1ea35fddca04c0965c073350 - md5: 01de444988ed960031dbe84cf4f9b1fc + size: 29057 + timestamp: 1750808257258 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-15.1.0-he9431aa_3.conda + sha256: 9459e5e273397ee6680ea2f1f4bd64161f58a198e36a9983737f494642e08535 + md5: 2987b138ed84460e6898daab172e9798 + depends: + - libgfortran5 15.1.0 hbc25352_3 + constrains: + - libgfortran-ng ==15.1.0=*_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 29043 + timestamp: 1750808952391 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-14_2_0_h6c33f7e_103.conda + sha256: 8628746a8ecd311f1c0d14bb4f527c18686251538f7164982ccbe3b772de58b5 + md5: 044a210bc1d5b8367857755665157413 + depends: + - libgfortran5 14.2.0 h6c33f7e_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 156291 + timestamp: 1743863532821 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.1.0-hcea5267_3.conda + sha256: eea6c3cf22ad739c279b4d665e6cf20f8081f483b26a96ddd67d4df3c88dfa0a + md5: 530566b68c3b8ce7eec4cd047eae19fe depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15.1.0 @@ -311,17 +672,46 @@ packages: - libgfortran 15.1.0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 1569986 - timestamp: 1746642212331 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_2.conda - sha256: 05fff3dc7e80579bc28de13b511baec281c4343d703c406aefd54389959154fb - md5: fbe7d535ff9d3a168c148e07358cd5b1 + size: 1565627 + timestamp: 1750808236464 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-15.1.0-hbc25352_3.conda + sha256: c835503233b6114387e552fc549437657f893e06b684e42aff3739fef2bae235 + md5: eb1421397fe5db5ad4c3f8d611dd5117 + depends: + - libgcc >=15.1.0 + constrains: + - libgfortran 15.1.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1140270 + timestamp: 1750808938364 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-14.2.0-h6c33f7e_103.conda + sha256: 8599453990bd3a449013f5fa3d72302f1c68f0680622d419c3f751ff49f01f17 + md5: 69806c1e957069f1d515830dcc9f6cbb + depends: + - llvm-openmp >=8.0.0 + constrains: + - libgfortran 5.0.0 14_2_0_*_103 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 806566 + timestamp: 1743863491726 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.1.0-h767d61c_3.conda + sha256: 43710ab4de0cd7ff8467abff8d11e7bb0e36569df04ce1c099d48601818f11d1 + md5: 3cd1a7238a0dd3d0860fdefc496cc854 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 452635 - timestamp: 1746642113092 + size: 447068 + timestamp: 1750808138400 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-15.1.0-he277a41_3.conda + sha256: a6654342666271da9c396a41ea745dc6e56574806b42abb2be61511314f5cc40 + md5: b79b8a69669f9ac6311f9ff2e6bffdf2 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 449966 + timestamp: 1750808867863 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-32_h7ac8fdf_openblas.conda build_number: 32 sha256: 5b55a30ed1b3f8195dad9020fe1c6d0f514829bfaaf0cf5e393e93682af009f2 @@ -333,8 +723,37 @@ packages: - blas 2.132 openblas - liblapacke 3.9.0 32*_openblas license: BSD-3-Clause + license_family: BSD size: 17316 timestamp: 1750388820745 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-32_h411afd4_openblas.conda + build_number: 32 + sha256: 9d88f242d138e23bcaf3c1f2d41b53cef5594b1fd9da84dd35ec7e944a946de3 + md5: 8d143759d5a22e9975a996bd13eeb8f0 + depends: + - libblas 3.9.0 32_h1a9f1db_openblas + constrains: + - libcblas 3.9.0 32*_openblas + - blas 2.132 openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + size: 17308 + timestamp: 1750388926844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-32_hc9a63f6_openblas.conda + build_number: 32 + sha256: 5e1cfa3581d1dec6b07a75084ff6cfa4b4465c646c6884a71c78a28543f83b61 + md5: bf9ead3fa92fd75ad473c6a1d255ffcb + depends: + - libblas 3.9.0 32_h10e41b3_openblas + constrains: + - blas 2.132 openblas + - libcblas 3.9.0 32*_openblas + - liblapacke 3.9.0 32*_openblas + license: BSD-3-Clause + license_family: BSD + size: 17507 + timestamp: 1750388977861 - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8 md5: 1a580f7796c7bf6393fddb8bbbde58dc @@ -346,6 +765,44 @@ packages: license: 0BSD size: 112894 timestamp: 1749230047870 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.8.1-h86ecc28_2.conda + sha256: 498ea4b29155df69d7f20990a7028d75d91dbea24d04b2eb8a3d6ef328806849 + md5: 7d362346a479256857ab338588190da0 + depends: + - libgcc >=13 + constrains: + - xz 5.8.1.* + license: 0BSD + size: 125103 + timestamp: 1749232230009 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda + sha256: 0cb92a9e026e7bd4842f410a5c5c665c89b2eb97794ffddba519a626b8ce7285 + md5: d6df911d4564d77c4374b02552cb17d1 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.1.* + license: 0BSD + size: 92286 + timestamp: 1749230283517 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-h86ecc28_0.conda + sha256: ef8697f934c80b347bf9d7ed45650928079e303bad01bd064995b0e3166d6e7a + md5: 78cfed3f76d6f3f279736789d319af76 + depends: + - libgcc >=13 + license: BSD-2-Clause + license_family: BSD + size: 114064 + timestamp: 1748393729243 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda + sha256: 0a1875fc1642324ebd6c4ac864604f3f18f57fbcf558a8264f6ced028a3c75b2 + md5: 85ccccb47823dd9f7a99d2c7f530342f + depends: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + size: 71829 + timestamp: 1748393749336 - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 md5: d864d34357c3b65a4b731f78c0801dc4 @@ -367,8 +824,36 @@ packages: constrains: - openblas >=0.3.30,<0.3.31.0a0 license: BSD-3-Clause + license_family: BSD size: 5916819 timestamp: 1750379877844 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.30-pthreads_h9d3fd7e_0.conda + sha256: be2e84de39422a8a4241ceff5145913a475571a9ed5729f435c715ad8d9db266 + md5: 7c3670fbc19809070c27948efda30c4b + depends: + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.3.0 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4960761 + timestamp: 1750379264152 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_hf332438_0.conda + sha256: 501c8c64f1a6e6b671e49835e6c483bc25f0e7147f3eb4bbb19a4c3673dcaf28 + md5: 5d7dbaa423b4c253c476c24784286e4b + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.3.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.30,<0.3.31.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4163399 + timestamp: 1750378829050 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -377,35 +862,87 @@ packages: license: ISC size: 205978 timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.1-hee588c1_4.conda - sha256: ffd84568ec99d3614f226f1bcbfe46b3fa2f7cb253acb14ff351dc17e7854ea7 - md5: c79ba4d93602695bc60c6960ee59d2b1 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsodium-1.0.20-h68df207_0.conda + sha256: 448df5ea3c5cf1af785aad46858d7a5be0522f4234a4dc9bb764f4d11ff3b981 + md5: 2e4a8f23bebdcb85ca8e5a0fbe75666a + depends: + - libgcc-ng >=12 + 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 + license: ISC + size: 164972 + timestamp: 1716828607917 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.50.2-h6cd9bfd_0.conda + sha256: 07649c7c19b916179926006df5c38074618d35bf36cd33ab3fe8b22182bbd258 + md5: b04c7eda6d7dab1e6503135e7fad4d25 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 license: Unlicense - size: 919517 - timestamp: 1750454042999 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_2.conda - sha256: 6ae3d153e78f6069d503d9309f2cac6de5b93d067fc6433160a4c05226a5dad4 - md5: 1cb1c67961f6dd257eae9e9691b341aa + size: 918887 + timestamp: 1751135622316 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.50.2-he2a92bd_0.conda + sha256: 031499486870fa097445e660e3f1e94ba1e6c0dd063c9b1513be2ba5bff00472 + md5: d9c2f664f026418134d24a288eec2acd + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 918088 + timestamp: 1751135654429 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.50.2-h6fb428d_0.conda + sha256: 6b51a9e7366d6cd26e50d1d0646331d457999ebb88af258f06a74f075e95bf68 + md5: b2dc1707166040e738df2d514f8a1d22 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 901519 + timestamp: 1751135765345 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_3.conda + sha256: 7650837344b7850b62fdba02155da0b159cf472b9ab59eb7b472f7bd01dff241 + md5: 6d11a5edae89fe413c0569f16d308f5a depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.1.0 h767d61c_2 + - libgcc 15.1.0 h767d61c_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3896407 + timestamp: 1750808251302 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-15.1.0-h3f4de04_3.conda + sha256: 916a8c2530992140d23c4d3f63502f250ff36df7298ed9a8b72d3629c347d4ce + md5: 4e2d5a407e0ecfe493d8b2a65a437bd8 + depends: + - libgcc 15.1.0 he277a41_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 3902355 - timestamp: 1746642227493 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_2.conda - sha256: 11bea86e11de7d6bce87589197a383344df3fa0a3552dab7e931785ff1159a5b - md5: 9d2072af184b5caa29492bf2344597bb + size: 3833339 + timestamp: 1750808947966 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_3.conda + sha256: bbaea1ecf973a7836f92b8ebecc94d3c758414f4de39d2cc6818a3d10cb3216b + md5: 57541755b5a51691955012b8e197c06c depends: - - libstdcxx 15.1.0 h8f9b012_2 + - libstdcxx 15.1.0 h8f9b012_3 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL - size: 34647 - timestamp: 1746642266826 + size: 29093 + timestamp: 1750808292700 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-15.1.0-hf1166c9_3.conda + sha256: cb93360dce004fda2f877fd6071c8c0d19ab67b161ff406d5c0d63b7658ad77c + md5: f981af71cbd4c67c9e6acc7d4cc3f163 + depends: + - libstdcxx 15.1.0 h3f4de04_3 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 29078 + timestamp: 1750808974598 - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b @@ -415,6 +952,15 @@ packages: 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 + 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 @@ -435,35 +981,187 @@ packages: license_family: Other size: 60963 timestamp: 1727963148474 -- conda: https://conda.modular.com/max/noarch/max-25.4.0-release.conda +- 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 + 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 + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-20.1.7-hdb05f8b_0.conda + sha256: e7d95b50a90cdc9e0fc38bc37f493a61b9d08164114b562bbd9ff0034f45eca2 + md5: 741e1da0a0798d32e13e3724f2ca2dcf + depends: + - __osx >=11.0 + constrains: + - openmp 20.1.7|20.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + size: 281996 + timestamp: 1749892286735 +- conda: https://conda.modular.com/max-nightly/noarch/max-25.5.0.dev2025070207-release.conda noarch: python - sha256: 5b6a859f887e1042c04bc7cf006e23e7464c7d60b38995552d802007153f0b4b + sha256: 694ec9335d0aa3f9d547b893dee73b7805d5e10c695633117d96e98585224a44 + depends: + - max-core ==25.5.0.dev2025070207 release + - max-python ==25.5.0.dev2025070207 release + - mojo-jupyter ==25.5.0.dev2025070207 release + - mblack ==25.5.0.dev2025070207 release + license: LicenseRef-Modular-Proprietary + size: 9408 + timestamp: 1751443266244 +- conda: https://conda.modular.com/max-nightly/linux-64/max-core-25.5.0.dev2025070207-release.conda + sha256: ef4385d6a08fe3d36999bac4ac7ae7457eabbce9e398a2aaa5fe8fc511a8602d depends: - - max-core ==25.4.0 release - - max-python ==25.4.0 release - - mojo-jupyter ==25.4.0 release - - mblack ==25.4.0 release + - mblack ==25.5.0.dev2025070207 release license: LicenseRef-Modular-Proprietary - size: 9352 - timestamp: 1749999220995 -- conda: https://conda.modular.com/max/linux-64/max-core-25.4.0-release.conda - sha256: 2e65fadd4260ff2524acfc19318a838e4a08ea106a5891810ecc6a7f4f620bce + size: 223140932 + timestamp: 1751443266244 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-core-25.5.0.dev2025070207-release.conda + sha256: 6fcdd529b427824e4a9a65343ca44b99ddd1ceb8ba8f8b59cd5d1f3a6d362bec depends: - - mblack ==25.4.0 release + - mblack ==25.5.0.dev2025070207 release license: LicenseRef-Modular-Proprietary - size: 222847892 - timestamp: 1749999208906 -- conda: https://conda.modular.com/max/linux-64/max-python-25.4.0-release.conda + size: 223782377 + timestamp: 1751443258782 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-core-25.5.0.dev2025070207-release.conda + sha256: 827dd177011fdc9e8801901bd4e7ef5844d22b248d684c815c287552b99e0e01 + depends: + - mblack ==25.5.0.dev2025070207 release + license: LicenseRef-Modular-Proprietary + size: 186483973 + timestamp: 1751443896115 +- conda: https://conda.modular.com/max-nightly/linux-64/max-python-25.5.0.dev2025070207-release.conda noarch: python - sha256: 9929ce41b0fdff5186d2d9b450b37dbb072754bf223476d125cd1333c3035a80 + sha256: 888f43da28c644024ca256146b8dfbc34298dc22159b70a268374d9cf9455464 depends: + - numpy >=1.18 + - python-gil >=3.9,<3.14 + - max-core ==25.5.0.dev2025070207 release + constrains: + - aiohttp >=3.11.12 - click >=8.0.0 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - huggingface_hub >=0.28.0 + - pillow >=11.0.0 + - psutil >=6.1.1 + - requests >=2.32.3 + - safetensors >=0.5.2 + - pysoundfile >=0.12.1 + - pytorch >=2.5.0 + - tqdm >=4.67.1 + - transformers >=4.52.4 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar >=0.1.18 + - aiofiles >=24.1.0 + - asgiref >=3.8.1 + - fastapi >=0.115.3,<0.116 + - grpcio >=1.68.0 + - grpcio-tools >=1.68.0 + - grpcio-reflection >=1.68.0 + - httpx >=0.28.1,<0.29 + - msgspec >=0.19.0 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0,<1.31.1 + - opentelemetry-exporter-prometheus >=0.50b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - prometheus-async >=22.2.0 + - prometheus_client >=0.21.0 + - protobuf >=5.29.1,<=5.30.0 + - pydantic-settings >=2.7.1 + - pydantic + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - pyzmq >=26.3.0 + - scipy >=1.13.0 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - starlette >=0.40.0,<0.41.3 + - taskgroup >=0.2.2 + - tokenizers >=0.19.0 + license: LicenseRef-Modular-Proprietary + size: 31542762 + timestamp: 1751443266244 +- conda: https://conda.modular.com/max-nightly/linux-aarch64/max-python-25.5.0.dev2025070207-release.conda + noarch: python + sha256: f96df97f48c661d787c1ad75ccabdca295eb64301b4f30a74c319196dfab961d + depends: - numpy >=1.18 + - python-gil >=3.9,<3.14 + - max-core ==25.5.0.dev2025070207 release + constrains: + - aiohttp >=3.11.12 + - click >=8.0.0 + - gguf >=0.14.0 + - hf-transfer >=0.1.9 + - huggingface_hub >=0.28.0 + - pillow >=11.0.0 + - psutil >=6.1.1 + - requests >=2.32.3 + - safetensors >=0.5.2 + - pysoundfile >=0.12.1 + - pytorch >=2.5.0 - tqdm >=4.67.1 + - transformers >=4.52.4 + - uvicorn >=0.34.0 + - uvloop >=0.21.0 + - xgrammar >=0.1.18 + - aiofiles >=24.1.0 + - asgiref >=3.8.1 + - fastapi >=0.115.3,<0.116 + - grpcio >=1.68.0 + - grpcio-tools >=1.68.0 + - grpcio-reflection >=1.68.0 + - httpx >=0.28.1,<0.29 + - msgspec >=0.19.0 + - opentelemetry-api >=1.29.0 + - opentelemetry-exporter-otlp-proto-http >=1.27.0,<1.31.1 + - opentelemetry-exporter-prometheus >=0.50b0,<1.1.12.0rc1 + - opentelemetry-sdk >=1.29.0,<2.0 + - prometheus-async >=22.2.0 + - prometheus_client >=0.21.0 + - protobuf >=5.29.1,<=5.30.0 + - pydantic-settings >=2.7.1 + - pydantic + - pyinstrument >=5.0.1 + - python-json-logger >=2.0.7 + - pyzmq >=26.3.0 + - scipy >=1.13.0 + - sentinel >=0.3.0 + - sse-starlette >=2.1.2 + - starlette >=0.40.0,<0.41.3 + - taskgroup >=0.2.2 + - tokenizers >=0.19.0 + license: LicenseRef-Modular-Proprietary + size: 19415321 + timestamp: 1751443258782 +- conda: https://conda.modular.com/max-nightly/osx-arm64/max-python-25.5.0.dev2025070207-release.conda + noarch: python + sha256: fc743d2f4044024c2c9c38c80cadd3b7049fef86e9a3ae881ee893388ddaadba + depends: + - numpy >=1.18 - python-gil >=3.9,<3.14 - - max-core ==25.4.0 release + - max-core ==25.5.0.dev2025070207 release constrains: - aiohttp >=3.11.12 + - click >=8.0.0 - gguf >=0.14.0 - hf-transfer >=0.1.9 - huggingface_hub >=0.28.0 @@ -472,11 +1170,13 @@ packages: - requests >=2.32.3 - safetensors >=0.5.2 - pysoundfile >=0.12.1 - - pytorch >=2.5.0,<=2.7.0 - - transformers >=4.49.0,!=4.51.0 + - pytorch >=2.5.0 + - tqdm >=4.67.1 + - transformers >=4.52.4 - uvicorn >=0.34.0 - uvloop >=0.21.0 - xgrammar >=0.1.18 + - aiofiles >=24.1.0 - asgiref >=3.8.1 - fastapi >=0.115.3,<0.116 - grpcio >=1.68.0 @@ -503,11 +1203,11 @@ packages: - taskgroup >=0.2.2 - tokenizers >=0.19.0 license: LicenseRef-Modular-Proprietary - size: 15378871 - timestamp: 1749999208906 -- conda: https://conda.modular.com/max/noarch/mblack-25.4.0-release.conda + size: 16058925 + timestamp: 1751443896115 +- conda: https://conda.modular.com/max-nightly/noarch/mblack-25.5.0.dev2025070207-release.conda noarch: python - sha256: 9be9ada7b2aeadc6f4db6da420d540f84beeb583f698bd65b77c419d9d6c50f6 + sha256: 53e95866f525acf6f6f064d7c6abcbc87ec21d94cf3bbfd68992173660be7a14 depends: - python >=3.9,<3.14 - click >=8.0.0 @@ -515,22 +1215,23 @@ packages: - packaging >=22.0 - pathspec >=0.9.0 - platformdirs >=2 + - tomli >=1.1.0 - typing_extensions >=v4.12.2 - python license: MIT - size: 131193 - timestamp: 1749999220994 -- conda: https://conda.modular.com/max/noarch/mojo-jupyter-25.4.0-release.conda + size: 131281 + timestamp: 1751443266244 +- conda: https://conda.modular.com/max-nightly/noarch/mojo-jupyter-25.5.0.dev2025070207-release.conda noarch: python - sha256: 4d9b2feda7b6cbf1440c49a78591d15a7247e72e003835dd4fdde2419e6b7020 + sha256: d8494ffcd85cf90baf620a7309639bb7603c343a96e15604702c9289bf3a58cd depends: - - max-core ==25.4.0 release + - max-core ==25.5.0.dev2025070207 release - python >=3.9,<3.14 - jupyter_client >=8.6.2,<8.7 - python license: LicenseRef-Modular-Proprietary - size: 22418 - timestamp: 1749999220995 + size: 22481 + timestamp: 1751443266244 - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda sha256: 6ed158e4e5dd8f6a10ad9e525631e35cee8557718f83de7a4e3966b1f772c4b1 md5: e9c622e0d00fa24a6292279af3ab6d06 @@ -549,9 +1250,25 @@ packages: license: X11 AND BSD-3-Clause size: 891641 timestamp: 1738195959188 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.0-py312h6cf2f7f_0.conda - sha256: 59da92a150737e830c75e8de56c149d6dc4e42c9d38ba30d2f0d4787a0c43342 - md5: 8b4095ed29d1072f7e4badfbaf9e5851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-ha32ae93_3.conda + sha256: 91cfb655a68b0353b2833521dc919188db3d8a7f4c64bea2c6a7557b24747468 + md5: 182afabe009dc78d8b73100255ee6868 + depends: + - libgcc >=13 + 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 + license: X11 AND BSD-3-Clause + size: 797030 + timestamp: 1738196177597 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.3.1-py312h6cf2f7f_0.conda + sha256: 731325aea31b3825c8c1b371f4314c096f7981de1c2cc276a7931f889b5bb6d8 + md5: 7e086a30150af2536a1059885368dcf0 depends: - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 @@ -565,19 +1282,75 @@ packages: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 8417476 - timestamp: 1749430957684 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.0-h7b32b05_1.conda - sha256: b4491077c494dbf0b5eaa6d87738c22f2154e9277e5293175ec187634bd808a0 - md5: de356753cfdbffcde5bb1e86e3aa6cd0 + size: 8364184 + timestamp: 1751342617648 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.3.1-py313hcf1be6b_0.conda + sha256: c2c2bae24e6a0d3fc7b047a4b247615643f4ea14323012eb1b138d487297c7f4 + md5: 9e2b264944c874a641b6c420a78ba5c3 + depends: + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 7211192 + timestamp: 1751342569903 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.3.1-py313h41a2e72_0.conda + sha256: 35346fa9da0a6a8776d4235469c1513b116d2ba3844802da00d5e821bb3e9828 + md5: 3ed1eeb92906e8653c7346854c32dc6e + depends: + - __osx >=11.0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libcxx >=18 + - liblapack >=3.9.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 6567388 + timestamp: 1751342678109 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.5.1-h7b32b05_0.conda + sha256: 942347492164190559e995930adcdf84e2fea05307ec8012c02a505f5be87462 + md5: c87df2ab1448ba69169652ab9547082d depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=13 license: Apache-2.0 license_family: Apache - size: 3117410 - timestamp: 1746223723843 + size: 3131002 + timestamp: 1751390382076 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.5.1-hd08dc88_0.conda + sha256: 0b4f88052fc9c14aa17c844d1e92a9a76277aa980a445a47d2dbc6590d60a991 + md5: cf2dfe9c774c20e65d42d87147903bdb + depends: + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 3653877 + timestamp: 1751392052717 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.5.1-h81ee809_0.conda + sha256: f94fde0f096fa79794c8aa0a2665630bbf9026cc6438e8253f6555fc7281e5a8 + md5: a8ac77e7c7e58d43fa34d60bd4361062 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + size: 3071649 + timestamp: 1751390309393 - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda sha256: 289861ed0c13a15d7bbb408796af4de72c2fe67e2bcb0de98f4c3fce259d7991 md5: 58335b26c38bf4a20f399384c33cbcf9 @@ -633,16 +1406,65 @@ packages: license: Python-2.0 size: 31445023 timestamp: 1749050216615 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda - sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 - md5: 5ba79d7c71f03c678c8ead841f347d6e +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.5-h2382df9_102_cp313.conda + build_number: 102 + sha256: 2eb3ce8b2acf036bd30d4d41cfb45766ad817e26479f18177cfb950c0af6f27b + md5: ed5b16381ac28233a65c549a59d97b68 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - libgcc >=13 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.50.1,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 33764400 + timestamp: 1750062474929 + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.5-hf3f3da0_102_cp313.conda + build_number: 102 + sha256: ee1b09fb5563be8509bb9b29b2b436a0af75488b5f1fa6bcd93fe0fba597d13f + md5: 123b7f04e7b8d6fc206cf2d3466f8a4b + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.7.0,<3.0a0 + - libffi >=3.4.6,<3.5.0a0 + - liblzma >=5.8.1,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.50.1,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.5.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 12931515 + timestamp: 1750062475020 + python_site_packages_path: lib/python3.13/site-packages +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda + sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 + md5: 5b8d21249ff20967101ffa321cab24e8 depends: - python >=3.9 - six >=1.5 + - python license: Apache-2.0 license_family: APACHE - size: 222505 - timestamp: 1733215763718 + size: 233310 + timestamp: 1751104122689 - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.11-hd8ed1ab_0.conda sha256: b8afeaefe409d61fa4b68513b25a66bb17f3ca430d67cfea51083c7bfbe098ef md5: 859c6bec94cd74119f12b961aba965a8 @@ -652,6 +1474,15 @@ packages: license: Python-2.0 size: 45836 timestamp: 1749047798827 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.5-h4df99d1_102.conda + sha256: ac6cf618100c2e0cad1cabfe2c44bf4a944aa07bb1dc43abff73373351a7d079 + md5: 2eabcede0db21acee23c181db58b4128 + depends: + - cpython 3.13.5.* + - python_abi * *_cp313 + license: Python-2.0 + size: 47572 + timestamp: 1750062593102 - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-7_cp312.conda build_number: 7 sha256: a1bbced35e0df66cc713105344263570e835625c28d1bdee8f748f482b2d7793 @@ -662,6 +1493,16 @@ packages: license_family: BSD size: 6971 timestamp: 1745258861359 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-7_cp313.conda + build_number: 7 + sha256: 0595134584589064f56e67d3de1d8fcbb673a972946bce25fb593fb092fdcd97 + md5: e84b44e6300f1703cb25d29120c5b1d8 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 6988 + timestamp: 1745258852285 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.0.0-py312hbf22597_0.conda sha256: 8564a7beb906476813a59a81a814d00e8f9697c155488dbc59a5c6e950d5f276 md5: 4b9a9cda3292668831cf47257ade22a6 @@ -677,6 +1518,35 @@ packages: license_family: BSD size: 378610 timestamp: 1749898590652 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyzmq-27.0.0-py313h6e72e74_0.conda + sha256: dbe4072369da72df5017204457d3dbe1c7a302ac8aca9a4fe52015f4b6ad2c2d + md5: d901488aaa8c5f0dbdd2d5848796c9ff + depends: + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 381357 + timestamp: 1749900828011 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.0.0-py313he6960b1_0.conda + sha256: da722b8ee2785d764182c2d3b9007fb5ef8bc4096f5fc018fd3b3026719b1ee7 + md5: 2cacb246854e185506768b3f7ae23a69 + depends: + - __osx >=11.0 + - libcxx >=18 + - libsodium >=1.0.20,<1.0.21.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 363932 + timestamp: 1749899287142 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda sha256: 2d6d0c026902561ed77cd646b5021aef2d4db22e57a5b0178dfc669231e06d2c md5: 283b96675859b20a825f8fa30f311446 @@ -687,6 +1557,25 @@ packages: 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 + 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 + license: GPL-3.0-only + license_family: GPL + size: 252359 + timestamp: 1740379663071 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db md5: a451d576819089b0d672f18768be0f65 @@ -707,6 +1596,35 @@ packages: license_family: BSD size: 3285204 timestamp: 1748387766691 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-noxft_h5688188_102.conda + sha256: 46e10488e9254092c655257c18fcec0a9864043bdfbe935a9fbf4fb2028b8514 + md5: 2562c9bfd1de3f9c590f0fe53858d85c + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + size: 3342845 + timestamp: 1748393219221 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda + sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e + md5: 7362396c170252e7b7b0c8fb37fe9c78 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + size: 3125538 + timestamp: 1748388189063 +- 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.5.1-py312h66e93f0_0.conda sha256: c96be4c8bca2431d7ad7379bad94ed6d4d25cd725ae345540a531d9e26e148c9 md5: c532a6ee766bed75c4fa0c39e959d132 @@ -719,15 +1637,29 @@ packages: license_family: Apache size: 850902 timestamp: 1748003427956 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.5.1-py313h6a51379_0.conda + sha256: 819497d044a23d6d69fa09aaf7f4d59b6c9db6443d6e32691ccb3361849e3979 + md5: efd003285041d23e604630b18f24b9dd depends: - - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 876988 + timestamp: 1748005374481 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.1-py313h90d716c_0.conda + sha256: 29c623cfb1f9ea7c1d865cf5f52ae6faa6497ceddbe7841ae27901a21f8cf79f + md5: 1ab3bef3e9aa0bba9eee2dfbedab1dba + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: Apache-2.0 + license_family: Apache + size: 874352 + timestamp: 1748003547444 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed @@ -766,6 +1698,30 @@ packages: 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 + 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 + license: MPL-2.0 + license_family: MOZILLA + size: 281565 + timestamp: 1731585108039 - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhd8ed1ab_0.conda sha256: 7560d21e1b021fd40b65bfb72f67945a3fcb83d78ad7ccf37b8b3165ec3b68ad md5: df5e78d904988eb55042c0c97446079f diff --git a/pixi.toml b/pixi.toml index e4923aca..e3fb1230 100644 --- a/pixi.toml +++ b/pixi.toml @@ -1,9 +1,9 @@ [project] authors = ["Samuel M. Fischer ", "Martin Lange "] -channels = ["conda-forge", "https://conda.modular.com/max"] +channels = ["conda-forge", "https://conda.modular.com/max-nightly"] description = "Larecs🌲 is a performance-oriented archetype-based ECS for Mojo🔥." name = "larecs" -platforms = ["linux-64"] +platforms = ["linux-64", "osx-arm64", 'linux-aarch64'] version = "0.3.0" [tasks] diff --git a/src/larecs/bitmask.mojo b/src/larecs/bitmask.mojo index c9b83dcd..3ccad4e5 100644 --- a/src/larecs/bitmask.mojo +++ b/src/larecs/bitmask.mojo @@ -1,4 +1,5 @@ from bit import pop_count, bit_not +from hashlib import Hasher from .filter import MaskFilter @@ -52,8 +53,9 @@ struct _BitMaskIndexIter(Copyable, ExplicitlyCopyable, Movable, Sized): return self._size -@register_passable -struct BitMask(Copyable, EqualityComparable, KeyElement, Movable, Stringable): +struct BitMask( + Copyable, EqualityComparable, KeyElement, Movable, Representable, Stringable +): """BitMask is a 256 bit bitmask.""" alias IndexDType = DType.uint8 @@ -94,14 +96,10 @@ struct BitMask(Copyable, EqualityComparable, KeyElement, Movable, Stringable): """ self = Self(bits) - fn __copyinit__(out self, other: Self): - """Initializes the mask with the other mask.""" - self._bytes = other._bytes - @always_inline - fn __hash__(self) -> UInt: + fn __hash__[H: Hasher](self, mut hasher: H): """Hashes the mask.""" - return hash(self._bytes) + return hasher.update(self._bytes) @always_inline fn __eq__(self, other: Self) -> Bool: @@ -179,6 +177,7 @@ struct BitMask(Copyable, EqualityComparable, KeyElement, Movable, Stringable): @always_inline fn invert(self) -> BitMask: """Returns the inversion of this mask.""" + print("Create inversion:", bit_not(self._bytes)) return BitMask(bytes=bit_not(self._bytes)) @always_inline diff --git a/src/larecs/entity.mojo b/src/larecs/entity.mojo index c13e778e..dedf0ab2 100644 --- a/src/larecs/entity.mojo +++ b/src/larecs/entity.mojo @@ -1,4 +1,5 @@ from bit import bit_reverse +from hashlib import Hasher from .types import EntityId from .archetype import Archetype, EntityAccessor @@ -84,10 +85,10 @@ struct Entity(EqualityComparable, Hashable, KeyElement, Stringable): ) @always_inline - fn __hash__(self, out output: UInt): + fn __hash__[H: Hasher](self, mut hasher: H): """Returns a unique hash of the entity.""" - output = Int(self._id) - output |= bit_reverse(Int(self._generation)) + hasher.update(self._id) + hasher.update(self._generation) @always_inline fn get_id(self) -> EntityId: diff --git a/src/larecs/pool.mojo b/src/larecs/pool.mojo index 85f9223b..c6500dd0 100644 --- a/src/larecs/pool.mojo +++ b/src/larecs/pool.mojo @@ -54,11 +54,17 @@ struct EntityPool(Copyable, Movable, Sized): if entity.get_id() == 0: raise Error("Can't recycle reserved zero entity") + if entity.get_id() >= len(self._entities): + raise Error( + String("Entity ID {} is out of bounds (max: {})").format( + entity.get_id(), len(self._entities) - 1 + ) + ) self._entities[entity.get_id()]._generation += 1 - self._next, self._entities[entity.get_id()]._id = ( - entity.get_id(), - self._next, - ) + + tmp = self._next + self._next = entity.get_id() + self._entities[entity.get_id()]._id = tmp self._available += 1 @always_inline diff --git a/src/larecs/query.mojo b/src/larecs/query.mojo index 3ea80c2b..5bfea7ac 100644 --- a/src/larecs/query.mojo +++ b/src/larecs/query.mojo @@ -6,6 +6,7 @@ from .world import World from .lock import LockMask from .debug_utils import debug_warn from .static_optional import StaticOptional +from memory import UnsafePointer struct Query[ @@ -67,9 +68,36 @@ struct Query[ without_mask: The mask for components to exclude. """ self._world = world + print( + "Create query with mask: ", + String(UnsafePointer(to=mask)), + mask._bytes, + ) self._mask = mask^ + print( + "Moved to: ", + String(UnsafePointer(to=self._mask)), + self._mask._bytes, + ) + + @parameter + if has_without_mask: + print( + "Corresponding exclude mask: ", + String(UnsafePointer(to=without_mask.or_else(BitMask()))), + without_mask.or_else(BitMask())._bytes, + ) + self._without_mask = without_mask^ + @parameter + if has_without_mask: + print( + "The stored exclude mask: ", + # String(self._without_mask.unsafe_ptr()), + self._without_mask.or_else(BitMask())._bytes, + ) + fn __len__(self) raises -> Int: """ Returns the number of entities matching the query. @@ -157,10 +185,17 @@ struct Query[ Returns: The query, made exclusive. """ + mask = StaticOptional(self._mask.invert()) + print( + "Create exclude mask: ", + String(UnsafePointer(to=mask.or_else(BitMask()))), + mask.or_else(BitMask())._bytes, + ) + query = Self.QueryWithWithout( self._world, self._mask, - self._mask.invert(), + mask, ) @@ -249,6 +284,12 @@ struct _ArchetypeIterator[ self._mask = mask^ self._without_mask = without_mask^ + print("Create archetype iterator with mask: ", self._mask._bytes) + if self._without_mask.has_value: + print( + "Exclude mask: ", self._without_mask.or_else(BitMask())._bytes + ) + self._buffer_index = 0 self._max_buffer_index = Self.buffer_size self._archetype_index_buffer = SIMD[DType.int32, Self.buffer_size](-1) @@ -323,19 +364,30 @@ struct _ArchetypeIterator[ self._archetype_index_buffer[self._buffer_index] + 1, self._archetype_count, ): - is_valid = self._archetypes[].unsafe_get(i).get_mask().contains( - self._mask - ) and self._archetypes[].unsafe_get(i) + is_valid = ( + self._archetypes[][i].get_mask().contains(self._mask) + and self._archetypes[][i] + ) @parameter if has_without_mask: is_valid &= ( - not self._archetypes[] - .unsafe_get(i) + not self._archetypes[][i] .get_mask() .contains_any(self._without_mask[]) ) + print( + "Archetype ", + i, + " valid: ", + is_valid, + " mask: ", + self._archetypes[][i].get_mask()._bytes, + " length ", + len(self._archetypes[][i]), + ) + if is_valid: self._archetype_index_buffer[buffer_index] = i buffer_index += 1 @@ -368,9 +420,9 @@ struct _ArchetypeIterator[ """ self._buffer_index += 1 archetype = Pointer( - to=self._archetypes[].unsafe_get( - index(self._archetype_index_buffer[self._buffer_index]) - ) + to=self._archetypes[][ + self._archetype_index_buffer[self._buffer_index] + ] ) if self._buffer_index >= Self.buffer_size - 1: self._fill_archetype_buffer() @@ -395,15 +447,15 @@ struct _ArchetypeIterator[ self._archetype_index_buffer[Self.buffer_size - 1] + 1, len(self._archetypes[]), ): - is_valid = self._archetypes[].unsafe_get(i).get_mask().contains( - self._mask - ) and self._archetypes[].unsafe_get(i) + is_valid = ( + self._archetypes[][i].get_mask().contains(self._mask) + and self._archetypes[][i] + ) @parameter if has_without_mask: is_valid &= ( - not self._archetypes[] - .unsafe_get(i) + not self._archetypes[][i] .get_mask() .contains_any(self._without_mask[]) ) @@ -522,6 +574,13 @@ struct _EntityIterator[ Error: If the lock cannot be acquired (more than 256 locks exist). """ + @parameter + if has_without_mask: + print( + "Create _EntityIterator with exclude mask: ", + without_mask.or_else(BitMask())._bytes, + ) + self._archetype_iterator = Self.ArchetypeIterator( archetypes, mask, without_mask ) diff --git a/src/larecs/scheduler.mojo b/src/larecs/scheduler.mojo index b3b27dbc..f70389c1 100644 --- a/src/larecs/scheduler.mojo +++ b/src/larecs/scheduler.mojo @@ -17,7 +17,7 @@ fn _update_system[ system: The system to update. world: The world to use for the update. """ - system.unsafe_get[S]().update(world) + system.get[S]().update(world) fn _initialize_system[ @@ -33,7 +33,7 @@ fn _initialize_system[ system: The system to initialize. world: The world to use for the initialization. """ - system.unsafe_get[S]().initialize(world) + system.get[S]().initialize(world) fn _finalize_system[ @@ -49,7 +49,7 @@ fn _finalize_system[ system: The system to finalize. world: The world to use for the finalization. """ - system.unsafe_get[S]().finalize(world) + system.get[S]().finalize(world) struct Scheduler[*ComponentTypes: ComponentType]: diff --git a/src/larecs/static_optional.mojo b/src/larecs/static_optional.mojo index ddc05a5f..be8d63e8 100644 --- a/src/larecs/static_optional.mojo +++ b/src/larecs/static_optional.mojo @@ -1,4 +1,6 @@ from memory import UnsafePointer +from .bitmask import BitMask +from sys.intrinsics import _type_is_eq @fieldwise_init @@ -18,10 +20,7 @@ struct StaticOptional[ """ # Fields - alias type = __mlir_type[ - `!pop.array<`, Int(has_value).value, `, `, Self.ElementType, `>` - ] - var _value: Self.type + var _value: InlineArray[ElementType, Int(has_value), run_destructors=False] """The underlying storage for the optional.""" # ===------------------------------------------------------------------===# @@ -38,7 +37,7 @@ struct StaticOptional[ not has_value, "Initialize with a value if `has_value` is `True`", ]() - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) + self._value = {uninitialized=True} @always_inline @implicit @@ -48,24 +47,23 @@ struct StaticOptional[ Args: value: The value to fill the optional with. """ - __mlir_op.`lit.ownership.mark_initialized`(__get_mvalue_as_litref(self)) - var ptr = UnsafePointer(to=self[]) - ptr.init_pointee_move(value^) - - @always_inline - fn copy(self) -> Self: - """Explicitly copy the provided value. + @parameter + if _type_is_eq[Self.ElementType, BitMask](): + print( + "Initializing StaticOptional with BitMask:", + UnsafePointer(to=value).bitcast[BitMask]()[]._bytes, + ) - Returns: - A copy of the value. - """ + self._value = {uninitialized=True} + self._value.unsafe_ptr().init_pointee_move(value^) @parameter - if has_value: - return Self(self[]) - else: - return Self() + if _type_is_eq[Self.ElementType, BitMask](): + print( + "The stored value is:", + UnsafePointer(to=self[]).bitcast[BitMask]()[]._bytes, + ) @always_inline fn __copyinit__(out self, other: Self): @@ -74,40 +72,57 @@ struct StaticOptional[ Args: other: The optional to copy. """ - self = other.copy() + self._value = {uninitialized=True} + + @parameter + if has_value: + self.unsafe_ptr().init_pointee_copy(other[]) + + fn __moveinit__(out self, owned other: Self): + """Move construct the optional. + + Args: + other: The optional to move. + """ + self._value = {uninitialized=True} + + @parameter + if has_value: + @parameter + if _type_is_eq[Self.ElementType, BitMask](): + print( + "Moving StaticOptional with BitMask:", + UnsafePointer(to=other[]).bitcast[BitMask]()[]._bytes, + ) + other.unsafe_ptr().move_pointee_into(self.unsafe_ptr()) + + @parameter + if _type_is_eq[Self.ElementType, BitMask](): + print( + "The moved value is:", + UnsafePointer(to=self[]).bitcast[BitMask]()[]._bytes, + ) + fn __del__(owned self): """Deallocate the optional.""" @parameter if has_value: - var ptr = self.unsafe_ptr() - ptr.destroy_pointee() + self._value.unsafe_ptr().destroy_pointee() # ===------------------------------------------------------------------===# # Methods # ===------------------------------------------------------------------===# @always_inline - fn __getitem__(ref self) -> ref [self] Self.ElementType: + fn __getitem__(ref self) -> ref [self._value] Self.ElementType: """Get a reference to the value. Returns: A reference to the value. """ - constrained[ - has_value, - ( - "The value is not present. Use `has_value` to check if the" - " value is present." - ), - ]() - alias zero = index(0) - var ptr = __mlir_op.`pop.array.gep`( - UnsafePointer(to=self._value).address, - zero, - ) - return UnsafePointer(ptr)[] + return self._value[0] @always_inline fn or_else(self, value: ElementType) -> ElementType: @@ -127,7 +142,13 @@ struct StaticOptional[ return value @always_inline - fn unsafe_ptr(self) -> UnsafePointer[Self.ElementType]: + fn unsafe_ptr( + ref self, + ) -> UnsafePointer[ + Self.ElementType, + mut = Origin(__origin_of(self._value)).mut, + origin = __origin_of(self._value), + ]: """Get an `UnsafePointer` to the underlying array. That pointer is unsafe but can be used to read or write to the array. @@ -147,7 +168,7 @@ struct StaticOptional[ ), ]() - return UnsafePointer(to=self._value).bitcast[Self.ElementType]() + return self._value.unsafe_ptr() @always_inline fn __bool__(self) -> Bool: diff --git a/src/larecs/test_utils.mojo b/src/larecs/test_utils.mojo index 3be66053..157c4eb6 100644 --- a/src/larecs/test_utils.mojo +++ b/src/larecs/test_utils.mojo @@ -1,4 +1,4 @@ -from testing import assert_true, assert_false, assert_equal +from testing import assert_true, assert_false, assert_equal, assert_not_equal from random import random from memory import UnsafePointer from sys.info import sizeof @@ -412,17 +412,24 @@ struct MemTestStruct(Copyable, Movable): var move_counter: UnsafePointer[Int] var del_counter: UnsafePointer[Int] + var simd_data: SIMD[DType.uint8, 16] + var list_data: List[Int] + fn __moveinit__(out self, owned other: Self): self.move_counter = other.move_counter self.del_counter = other.del_counter self.copy_counter = other.copy_counter self.move_counter[] += 1 + self.simd_data = other.simd_data + self.list_data = other.list_data^ fn __copyinit__(out self, other: Self): self.move_counter = other.move_counter self.del_counter = other.del_counter self.copy_counter = other.copy_counter self.copy_counter[] += 1 + self.simd_data = other.simd_data + self.list_data = other.list_data fn __del__(owned self): self.del_counter[] += 1 @@ -431,7 +438,10 @@ struct MemTestStruct(Copyable, Movable): fn test_copy_move_del[ Container: Copyable & Movable, //, container_factory: fn (owned val: MemTestStruct) -> Container, -](init_moves: Int = 0, copy_moves: Int = 0,) raises: + get_element_ptr: fn (container: Container) raises -> UnsafePointer[ + MemTestStruct + ], +](init_moves: Int = 0, copy_moves: Int = 0, move_moves: Int = 0) raises: var del_counter = 0 var move_counter = 0 var copy_counter = 0 @@ -439,17 +449,26 @@ fn test_copy_move_del[ var test_move_counter = init_moves var test_copy_counter = 0 + test_list = [1, 5, 7, 12313] + test_simd = SIMD[DType.uint8, 16]() + for i in range(16): + test_simd[i] = i + container = container_factory( MemTestStruct( UnsafePointer(to=copy_counter), UnsafePointer(to=move_counter), UnsafePointer(to=del_counter), + test_simd, + test_list, ) ) assert_equal(del_counter, test_del_counter) assert_equal(move_counter, test_move_counter) assert_equal(copy_counter, test_copy_counter) + assert_equal(get_element_ptr(container)[].simd_data, test_simd) + assert_equal(get_element_ptr(container)[].list_data, test_list) container2 = container test_copy_counter += 1 @@ -458,17 +477,40 @@ fn test_copy_move_del[ assert_equal(move_counter, test_move_counter) assert_equal(copy_counter, test_copy_counter) + assert_equal( + get_element_ptr(container2)[].simd_data, + get_element_ptr(container)[].simd_data, + ) + assert_equal( + get_element_ptr(container2)[].list_data, + get_element_ptr(container)[].list_data, + ) + assert_not_equal( + get_element_ptr(container2)[].list_data.unsafe_ptr(), + get_element_ptr(container)[].list_data.unsafe_ptr(), + ) + list_address = get_element_ptr(container)[].list_data.unsafe_ptr() + _ = container2^ test_del_counter += 1 assert_equal(del_counter, test_del_counter) assert_equal(move_counter, test_move_counter) assert_equal(copy_counter, test_copy_counter) + container2 = container^ + test_move_counter += move_moves assert_equal(del_counter, test_del_counter) assert_equal(move_counter, test_move_counter) assert_equal(copy_counter, test_copy_counter) + assert_equal(get_element_ptr(container2)[].simd_data, test_simd) + assert_equal(get_element_ptr(container2)[].list_data, test_list) + assert_equal( + get_element_ptr(container2)[].list_data.unsafe_ptr(), + list_address, + ) + _ = container2^ test_del_counter += 1 assert_equal(del_counter, test_del_counter) diff --git a/src/larecs/unsafe_box.mojo b/src/larecs/unsafe_box.mojo index 44bf0ee9..0b781871 100644 --- a/src/larecs/unsafe_box.mojo +++ b/src/larecs/unsafe_box.mojo @@ -1,5 +1,6 @@ from memory import UnsafePointer from sys.info import sizeof +from compile.reflection import get_type_name fn _destructor[T: Copyable & Movable](box_storage: UnsafeBox.data_type): @@ -95,6 +96,7 @@ struct UnsafeBox(Copyable, Movable): var _copy_initializer: fn ( existing_box: UnsafeBox.data_type ) -> UnsafePointer[Byte] + var _element_type_name: String fn __init__[used_internally: Bool = False](out self): """ @@ -114,6 +116,7 @@ struct UnsafeBox(Copyable, Movable): self._data = UnsafePointer[Byte]() self._destructor = _dummy_destructor self._copy_initializer = _dummy_copy_initializer + self._element_type_name = "" fn __init__[T: Copyable & Movable](out self, owned data: T): """ @@ -136,17 +139,7 @@ struct UnsafeBox(Copyable, Movable): self._data = ptr.bitcast[Byte]() self._destructor = _destructor[T] self._copy_initializer = _copy_initializer[T] - - fn __moveinit__(out self, owned other: Self): - """ - Move constructor for the UnsafeBox. - - Args: - other: The UnsafeBox instance to be moved from. - """ - self._data = other._data - self._destructor = other._destructor - self._copy_initializer = other._copy_initializer + self._element_type_name = get_type_name[T]() fn __copyinit__(out self, other: Self): """ @@ -159,6 +152,7 @@ struct UnsafeBox(Copyable, Movable): self._data = other._copy_initializer(other._data) self._destructor = other._destructor self._copy_initializer = other._copy_initializer + self._element_type_name = other._element_type_name @always_inline fn __del__(owned self): @@ -171,10 +165,37 @@ struct UnsafeBox(Copyable, Movable): self._destructor(self._data) @always_inline - fn unsafe_get[T: Copyable & Movable](ref self) -> ref [self._data] T: + fn get[T: Copyable & Movable](ref self) raises -> ref [self._data] T: """ Returns a reference to the data stored in the box. + Parameters: + T: The type of the element stored in the UnsafeBox. + + Returns: + A reference to the data stored in the box. + + Raises: + Exception: if the name of the provided type does not match the name + of the type stored in the UnsafeBox. + """ + if not self._element_type_name == get_type_name[T](): + raise Error( + String("UnsafeBox: Type mismatch. Expected {}, got {}.").format( + self._element_type_name, get_type_name[T]() + ) + ) + return self._data.bitcast[T]()[] + + @always_inline + fn unsafe_get[T: Copyable & Movable](ref self) -> ref [self._data] T: + """ + Returns a reference to the data stored in the box without type checking. + + This method does not perform any type checks and should be used + with caution. It is the caller's responsibility to ensure that + the type `T` matches the type of the data stored in the UnsafeBox. + Parameters: T: The type of the element stored in the UnsafeBox. diff --git a/src/larecs/world.mojo b/src/larecs/world.mojo index 5d3d310d..6295082d 100644 --- a/src/larecs/world.mojo +++ b/src/larecs/world.mojo @@ -592,6 +592,7 @@ struct World[*component_types: ComponentType](Movable, Sized): for archetype in self._get_archetype_iterator( query.mask, query.without_mask ): + print("Removing archetype with mask", archetype[].get_mask()._bytes) for entity in archetype[].get_entities(): self._entity_pool.recycle(entity) archetype[].clear() @@ -1196,7 +1197,7 @@ struct World[*component_types: ComponentType](Movable, Sized): out iterator: Self.Query[__origin_of(self), has_without_mask=False], ): """ - Returns an [..query.Query] for all [..entity.Entity Entities] with the given components. + Returns a [..query.Query] for all [..entity.Entity Entities] with the given components. Parameters: Ts: The types of the components. @@ -1214,7 +1215,20 @@ struct World[*component_types: ComponentType](Movable, Sized): if not size: bitmask = BitMask() else: + l = List[Self.Id, size]() + s: String = "" + for i in range(len(l)): + s += String(Self.component_manager.get_id_arr[*Ts]()[i]) + print( + "World: create query with IDs", + s + ) bitmask = BitMask(Self.component_manager.get_id_arr[*Ts]()) + print( + "Bitmask has bytes:", + String(UnsafePointer(to=bitmask)), + bitmask._bytes, + ) iterator = Self.Query(Pointer(to=self), bitmask) @@ -1246,6 +1260,14 @@ struct World[*component_types: ComponentType](Movable, Sized): without_mask: The mask of components to exclude. start_indices: The start indices of the iterator. See [..query._EntityIterator]. """ + + @parameter + if has_without_mask: + print( + "Create iterator with exclude mask: ", + without_mask.or_else(BitMask())._bytes, + ) + iterator = _EntityIterator( Pointer(to=self._archetypes), Pointer(to=self._locks), @@ -1311,6 +1333,18 @@ struct World[*component_types: ComponentType](Movable, Sized): """ return self._locks.locked() + fn _print_debug_info(self, start_string: String = ""): + """ + Prints debug information about the world, including the number of entities, + archetypes, and components. + """ + print("World Debug Info:", start_string) + print(" Entities:", len(self._entity_pool)) + print(" Archetypes:", len(self._archetypes)) + for archetype in self._archetypes: + print(" Archetype:", archetype.get_mask()._bytes) + print(" Entities:", len(archetype)) + # fn Mask(self, entity: Entity) -> Mask: # """ # Mask returns the archetype [Mask] for the given [Entity]. diff --git a/test/bitmask_test.mojo b/test/bitmask_test.mojo index 6ae228ce..4d7a209c 100644 --- a/test/bitmask_test.mojo +++ b/test/bitmask_test.mojo @@ -50,16 +50,6 @@ fn get_random_1_true_bitmasks(size: Int, out vals: List[BitMask]): # ------ Tests ------ -fn run_all_bitmask_tests() raises: - print("Running all bitmask tests...") - test_bit_mask() - test_bit_mask_without_exclusive() - test_bit_mask_256() - test_bit_mask_eq() - test_bitmask_get_indices() - print("Done") - - fn test_bit_mask() raises: var mask = BitMask(UInt8(1), UInt8(2), UInt8(13), UInt8(27)) @@ -210,5 +200,29 @@ def test_bitmask_get_indices(): assert_equal(len(unique_indices), size) +fn bistmask_5_receiver(mask: BitMask) raises: + assert_equal(mask._bytes[0], 5) + + +fn test_bitmask_handover() raises: + """Test that a BitMask can be passed to a function.""" + mask = BitMask() + mask.set(UInt8(0), True) + mask.set(UInt8(2), True) + bistmask_5_receiver(mask) + assert_equal(mask._bytes[0], 5) + + +fn run_all_bitmask_tests() raises: + print("Running all bitmask tests...") + test_bit_mask() + test_bit_mask_without_exclusive() + test_bit_mask_256() + test_bit_mask_eq() + test_bitmask_get_indices() + test_bitmask_handover() + print("Done") + + fn main() raises: run_all_bitmask_tests() diff --git a/test/comptime_optional_test.mojo b/test/comptime_optional_test.mojo index 512b8f23..6411a4c4 100644 --- a/test/comptime_optional_test.mojo +++ b/test/comptime_optional_test.mojo @@ -2,9 +2,10 @@ from testing import * from larecs.test_utils import * from larecs.static_optional import StaticOptional +from larecs.bitmask import BitMask -def test_comptime_optional_init(): +def test_static_optional_init(): opt = StaticOptional[Int, False]() assert_false(opt.has_value) _ = opt._value @@ -14,7 +15,7 @@ def test_comptime_optional_init(): assert_equal(opt_with_value[][0], 42) -def test_comptime_optional_copy(): +def test_static_optional_copy(): opt_with_value = StaticOptional(42) opt_copy = opt_with_value.copy() assert_true(opt_copy.has_value) @@ -34,22 +35,27 @@ struct TestStruct[origin: MutableOrigin]: self.del_conuter[] += 1 -def test_comptime_optional_move_del(): +def test_static_optional_move_del(): fn factory( owned val: MemTestStruct, out result: StaticOptional[MemTestStruct, True], ): result = __type_of(result)(val^) - test_copy_move_del[factory](1, 1) + fn getter( + container: StaticOptional[MemTestStruct, True] + ) raises -> UnsafePointer[MemTestStruct]: + return UnsafePointer(to=container[]) + test_copy_move_del[factory, getter](1, 0, 1) -def test_comptime_optional_value(): + +def test_static_optional_value(): opt_with_value = StaticOptional[Int, True](42) assert_equal(opt_with_value[], 42) -def test_comptime_optional_size(): +def test_static_optional_size(): assert_equal(sizeof[StaticOptional[UInt16, True]](), 2) assert_equal(sizeof[StaticOptional[UInt16, False]](), 0) @@ -72,13 +78,56 @@ def test_or_else(): assert_equal(opt2.or_else(42), 10) +fn recipient_comperator( + compare: BitMask, + owned optional: StaticOptional[BitMask, True] = None, +) raises: + assert_true( + optional[] == compare, + String("Received {} but expected {}").format(optional[], compare), + ) + + +fn recipient_comperator_for_inline_array( + compare: BitMask, + owned optional: InlineArray[BitMask, 1], +) raises: + assert_true( + optional[0] == compare, + String("Received {} but expected {}").format(optional[0], compare), + ) + + +def test_handover_to_callee(): + data = BitMask() + data.set(0, True) + data.set(1, True) + data.set(5, True) + data = data.invert() + optional = StaticOptional(data) + recipient_comperator(data, optional) + recipient_comperator(data, data) + + +def test_inline_array_handover_to_callee(): + data = BitMask() + data.set(0, True) + data.set(1, True) + data.set(5, True) + data = data.invert() + optional = InlineArray[BitMask, 1](data) + recipient_comperator_for_inline_array(data, optional) + + def main(): print("Running tests...") - test_comptime_optional_size() - test_comptime_optional_init() - test_comptime_optional_copy() - test_comptime_optional_move_del() - test_comptime_optional_value() + test_static_optional_size() + test_static_optional_init() + test_static_optional_copy() + test_static_optional_move_del() + test_static_optional_value() test_optional_argument_application() + test_handover_to_callee() + test_inline_array_handover_to_callee() test_or_else() print("All tests passed.") diff --git a/test/query_test.mojo b/test/query_test.mojo index d4840043..bea43578 100644 --- a/test/query_test.mojo +++ b/test/query_test.mojo @@ -416,6 +416,7 @@ def run_all_query_tests(): test_query_empty() test_query_without() test_query_archetype_iterator() + test_query_in_system() def main(): diff --git a/test/unsafe_box_test.mojo b/test/unsafe_box_test.mojo index 72b82fbc..9ddd134e 100644 --- a/test/unsafe_box_test.mojo +++ b/test/unsafe_box_test.mojo @@ -17,12 +17,18 @@ def test_unsafe_box_copy_move_del(): ): result = __type_of(result)(val^) - test_copy_move_del[factory](init_moves=1) + fn getter(container: UnsafeBox) raises -> UnsafePointer[MemTestStruct]: + return UnsafePointer(to=container.get[MemTestStruct]()) + + test_copy_move_del[factory, getter](init_moves=1) def test_unsafe_box_value(): box = UnsafeBox(42) + assert_equal(box.get[Int](), 42) assert_equal(box.unsafe_get[Int](), 42) + with assert_raises(): + _ = box.get[Float32]() def main(): diff --git a/test/world_test.mojo b/test/world_test.mojo index 2f04c61d..7ea62d28 100644 --- a/test/world_test.mojo +++ b/test/world_test.mojo @@ -84,11 +84,18 @@ def test_world_remove_entities(): entity_count += len( world.add_entities(pos, vel, FlexibleComponent[1](0, 0), count=11) ) + world._print_debug_info("1") assert_equal(len(world), entity_count) _ = world.add_entities(pos, count=13) - world.remove_entities(world.query[Position, Velocity]().exclusive()) + to_remove = world.query[Position, Velocity]().exclusive() + print("Removing", len(to_remove)) + + world._print_debug_info("2") + + world.remove_entities(to_remove) + world._print_debug_info("3") assert_equal(len(world.query[Position, Velocity]().exclusive()), 0) assert_equal(len(world.query[Position, Velocity]()), entity_count - 12) @@ -313,25 +320,6 @@ def test_world_resource_access(): assert_equal(world.resources.get[Resource1]().value, 30) -# def test_world_reseource_access_static(): -# world = World[ -# Position, Velocity, ResourceMap = StaticTypeMap[Resource1, Resource2] -# ]() -# world.resources.add(Resource1(2), Resource2(4)) -# assert_equal(world.resources.get[Resource1]().value, 2) -# assert_equal(world.resources.get[Resource2]().value, 4) -# assert_equal(world.resources.has[Resource1](), True) - -# world.resources.set(Resource1(10)) -# assert_equal(world.resources.get[Resource1]().value, 10) - -# world.resources.remove[Resource1]() -# assert_equal(world.resources.has[Resource1](), False) - -# world.resources.add(Resource1(30)) -# assert_equal(world.resources.get[Resource1]().value, 30) - - def test_world_apply(): world = SmallWorld() pos = Position(1.0, 2.0) @@ -445,23 +433,22 @@ def test_world_copy(): def main(): print("Running tests...") - test_add_entity() - test_add_entities() - test_world_len() + # test_add_entity() + # test_add_entities() + # test_world_len() test_world_remove_entities() - test_set_component() - test_get_archetype_index() - test_entity_get() - test_remove_entity() - test_remove_archetype() - test_world_has_component() - test_world_add() - test_world_remove() - test_remove_and_add() - test_world_resource_access() - # test_world_reseource_access_static() - test_world_apply() - test_world_apply_SIMD() - test_world_lock() - test_world_copy() + # test_set_component() + # test_get_archetype_index() + # test_entity_get() + # test_remove_entity() + # test_remove_archetype() + # test_world_has_component() + # test_world_add() + # test_world_remove() + # test_remove_and_add() + # test_world_resource_access() + # test_world_apply() + # test_world_apply_SIMD() + # test_world_lock() + # test_world_copy() print("All tests passed.")